Gouvernance : presets, instructions et plancher de publication

Les workflows décrivent le travail ; la gouvernance décide qui le valide, quel modèle l'exécute, et ce qu'un graphe doit contenir avant de pouvoir être publié. Cette page couvre les quatre leviers que vous toucherez vraiment : les gates comme décisions, les presets, les instructions de node et le plancher de publication.

Rien ne s'approuve tout seul : aucune gate ne s'auto-résout sans un opt-in explicite pour cette gate précise — et le plancher de séparation des devoirs ne le peut jamais.

Les gates sont des décisions

Chaque gate qu'un workflow en cours atteint devient une carte dans votre file Decisions (« Décisions »). Le run se met en pause ; la carte porte le libellé de la gate, ses instructions et les champs typés que l'auteur vous demande de remplir. Vous la résolvez avec l'un des trois verbes :

  • Approve (« approuver ») — l'étape gardée reprend une fois que toutes les étapes précédentes sont terminées.
  • Skip (« passer ») — annule l'étape gardée ; le run continue sans elle.
  • Fail (« mettre en échec ») — fait échouer l'étape, et le routage d'échec du workflow prend le relais.

Ou vous ne faites rien : une gate non résolue attend, tout simplement. Rien ne bouge tant que personne ne décide.

Une règle domine les trois : vous n'approuvez jamais votre propre proposition. L'identité qui résout une gate doit être différente de celle qui a proposé le travail, et une gate levée par un agent exige toujours un humain. Si ARDS ne peut pas attribuer le résolveur, il refuse la résolution plutôt que de deviner.

Jamais automatique par défaut

Aucune gate ne s'auto-approuve d'origine. L'auto-résolution est un opt-in par gate : vous l'accordez explicitement, pour cette gate-là, et chaque résolution automatique est journalisée. L'accord est aussi lié au contenu exact pour lequel il a été donné — si ce que la gate garde change, la gate revient et redemande à un humain.

Même avec des opt-ins, un plancher ne bouge jamais : la gate de séparation des devoirs qui se dresse entre le travail accepté d'une mission et votre projet ne peut jamais être rendue automatique — ni par configuration, ni par waiver. Les runs sont acceptés par vous ; la promotion au-delà de ce point se décide par vous aussi.

Les presets

Un preset est un ensemble nommé de choix de modèle et de fournisseur (plus le transport d'outils qui va avec) utilisé par les nodes génératifs d'un workflow. Plutôt que de figer un modèle sur chaque node, vous liez un preset et gérez le choix à un seul endroit.

Les presets portent une portée — global, project ou customer — et la plus spécifique gagne : une liaison au niveau projet bat une liaison à l'échelle du client, qui bat une liaison globale.

Deux faits comptent en pratique :

  • Les presets se résolvent au dispatch, pas à la publication — quand un run démarre, le preset lié à ce moment-là gagne, même sur ce qui a été écrit sur le canvas. La publication a gelé le graphe, pas le choix de modèle.
  • La résolution suit une chaîne — un preset lié au dispatch gagne ; sinon le preset écrit (épinglé) sur le node s'applique ; sinon le preset par défaut du site prend le relais. Si rien ne nomme un modèle nulle part, le run refuse de démarrer plutôt que de deviner.

Vous liez un preset sur un draft avec le sélecteur de l'éditeur. Les profils de flotte sont un tout autre levier — dimensionnement des conteneurs et concurrence, pas choix de modèle ; voir le réglage de la flotte.

Instructions de node

Les nodes coder et agent d'un workflow peuvent porter des node instructions — une liaison d'instructions qui remplace les instructions rédigées du node au prochain dispatch (pour un coder, les inputs et le contrat de sortie sont recomposés à l'identique ; pour un agent, la liaison remplace son texte de tâche), sans toucher au graphe publié ni à son checksum. Une seule liaison s'applique — la plus spécifique : run bat project, qui bat tenant, qui bat global.

Aujourd'hui, vous définissez les instructions de node à la main, depuis l'éditeur ou par run au moment d'en démarrer un. Qu'ARDS propose lui-même un meilleur prompt n'est pas dans la v1 ; si cela arrive un jour, la proposition se présentera comme une décision que vous approuvez ou rejetez — rien ne s'appliquera jamais tout seul.

Le plancher de publication

Un workflow compte comme gouverné quand le catalogue de contrôles de votre organisation s'y applique — en pratique, dès que son graphe écrit quelque part qui compte. Pour un graphe gouverné, deux choses se produisent avant la publication :

  • Chaque écriture exige un stage (« étape de développement ») — l'un de Design, Implementation, Integration, Verification, PreDeployment. Le stage dit au plancher quels contrôles cette écriture requiert.
  • Les contrôles requis sont injectés au sein même de la publication — les gates et revues que le catalogue exige atterrissent dans le graphe publié comme de vrais nodes, marqués visuellement comme injectés. Publier depuis l'éditeur les injecte pendant la publication elle-même ; pour les relire sur le draft avant de publier, les agents lancent l'outil workflow_materialize, qui les écrit dans le draft exactement comme des nodes que vous auriez placés vous-même. La publication est refusée tant que le graphe n'est pas complet.

La vérification est déterministe : le même graphe plus le même catalogue de contrôles produit toujours les mêmes contrôles — le LLM ne synthétise jamais la conformité. Et le plancher ne fait qu'ajouter : la gouvernance peut relever la barre au-dessus de ce que vous avez écrit, jamais l'abaisser en silence. La publication elle-même est couverte dans le cycle de vie d'un workflow.

Les waivers

Quand un contrôle requis ne s'applique vraiment pas, vous ne le supprimez pas — les contrôles injectés ne sont pas négociables sur le canvas. La soupape, c'est le waiver (une dérogation) : explicite, lié à un seul contrôle, porteur d'une raison écrite, et journalisé de façon permanente. Un contrôle sous waiver reste visible comme tel — pas absent.

Certains contrôles ne peuvent pas être levés du tout. La règle de rétention de 25 ans en est un : aucune raison, si bonne soit-elle, ne la retire.