ADR-0159 : Pipeline unique de gestion du changement
Contexte
La référence d'architecture (B10.4) demande qu'un changement de prompt, de skill, de connecteur, de règle ou de modèle suive le même chemin : brouillon, tests, revue sécurité, approbation métier, staging, production, surveillance. Avant cette décision, chaque registre avait ses propres états (brouillon et publication des prompts, promotion des modèles, mise en production des packs) sans chemin commun ni trace unique des étapes.
Décision
eai.change_requests(V192, RLS forcée) porte un changement : type (prompt,skill,connector,rule,model,policy,tool,agent,pack), référence, version, étape, preuves et historique de chaque transition (acteur, date, approbation).- Une seule machine d'états, dans l'ordre
draft,test,security_review,business_approval,staging,production,monitoring, plusrejected: entrer en revue sécurité exige un rapport de tests réussi ; entrer en approbation métier exige l'approbationchange.security_reviewd'un responsable sécurité ; entrer en staging exige l'approbationchange.business_approvald'un administrateur ; entrer en production exige des tests de fumée de staging réussis et l'approbationchange.productionde deux personnes ; entrer en surveillance exige des tests de fumée de production réussis. - Les approbations passent par le service d'approbations existant : l'auteur ne s'approuve jamais, une approbation est liée au changement, à l'étape visée et à la version.
- Routes :
POST /v1/marketplace/changes,GET /v1/marketplace/changes,GET /v1/marketplace/changes/{id},POST /v1/marketplace/changes/{id}/advance(202 avec l'approbation à obtenir, puis 200),POST /v1/marketplace/changes/{id}/reject. Chaque transition est auditée.
Les registres gardent leurs propres états de publication ; le pipeline est la trace et la porte communes au-dessus d'eux.
Conséquences
- Un changement fermé (
monitoringourejected) n'avance plus. - Le branchement automatique d'un registre sur le pipeline (refuser une publication sans changement en
production) est une étape suivante, hors de cette décision.
Preuves
services/control-plane/tests/test_change_pipeline.py (les sept étapes pour un prompt, une skill, un connecteur, une règle et un modèle, preuves manquantes ou en échec refusées, auteur qui ne s'approuve pas, quorum de deux en production, rejet, isolation entre tenants, audit).