pii-shield plus stricte lundi, un coéquipier a
élargi une regex mercredi, et maintenant le trafic réel génère des faux
positifs. Vous avez besoin de voir ce qui a changé, qui l’a changé, et de
revenir en arrière — sans deviner le JSON précédent ni redéployer quoi que ce
soit. C’est ce que vous donne le versioning des guardrails : une ligne
d’historique par changement, un diff entre deux quelconques, et un revert en un
clic.
Cette page est l’atterrissage ciblé sur la surface de versioning. Pour le moteur
de guardrail lui-même — types de règles, étapes, actions — commencez par la
vue d’ensemble des guardrails ou la
référence Guardrails complète.
1. Ce que le versioning des guardrails enregistre
Chaque mutation sur un guardrail — create, update, delete et revert — écrit une ligne d’historique en append-only dans la même transaction que le changement. La ligne capture un instantané de la config visible par l’utilisateur à ce moment-là :- le nom du guardrail,
- s’il était activé,
- s’il était le défaut de l’espace de travail,
- le corps rules complet.
1),
l’opération qui l’a produite, l’auteur, et un timestamp. Parce que la
ligne est écrite de façon transactionnelle avec la modification, l’historique ne
peut jamais dériver de la politique active — si la modification est commitée, sa
ligne d’historique l’est aussi.
L’historique est append-only. Un revert ne rembobine ni ne réécrit les
lignes passées ; il ajoute une nouvelle version (voir
§4). Vous voyez toujours la
séquence complète de qui a fait quoi, dans l’ordre.
2. Un exemple concret — trouver la mauvaise modification et la rétablir
Disons que le guardrail42 a dérivé. Vous rédigez tout cela depuis la
console sur votre propre session — la clé de relais sk-orca-... ne sert
qu’aux appels /v1/*, jamais à lire ou changer la politique.
Lister l'historique
Ouvrez History sur la ligne du guardrail dans
/console/guardrails. Le
flux est du plus récent au plus ancien. Vous voyez v5 update (mercredi,
par un coéquipier), v4 update (lundi, par vous), v3 update, et ainsi de
suite jusqu’à v1 create. Lire l’historique est ouvert à tout Member de
l’espace de travail.Differ le changement suspect
Choisissez les deux versions qui encadrent la régression —
v4 et v5 — et
visualisez le diff. Le corps des règles est affiché côte à côte, donc la
regex élargie saute aux yeux comme la ligne qui a changé.Revert
Restaurez
v4. Le nom, le flag enabled, le flag default et les règles du
guardrail actif sont rétablis à cet instantané, et une nouvelle ligne v6 revert est ajoutée. Le changement est actif dès la prochaine requête —
aucun redéploiement, aucun changement de SDK. Revenir en arrière nécessite le
rôle Developer+.X-Workspace-Id :
3. Historique, diff, et le flux de versions
Le flux d'historique
Le flux d'historique
GET /api/guardrail/:id/history renvoie la trace de versions, du plus
récent au plus ancien. Chaque entrée est un instantané avec son numéro de
version, son opération (create / update / delete / revert), son
auteur et son timestamp. Le flux est à portée d’espace de travail — un
appelant dans un autre espace de travail obtient la même enveloppe
not-found qu’un guardrail manquant, donc l’existence ne fuit jamais.Une seule version
Une seule version
GET /api/guardrail/:id/history/:version récupère un instantané par son
numéro de version — pratique pour inspecter le corps exact des règles qui
était actif à un instant donné avant de décider de revenir à lui.Le diff
Le diff
GET /api/guardrail/:id/history/diff?from=N&to=M renvoie les deux
instantanés — from et to — afin que la console puisse rendre une
comparaison côte à côte du nom, des flags et des règles. Les deux versions
doivent appartenir à votre espace de travail, ou l’appel renvoie l’enveloppe
not-found uniforme.Les lectures — liste d’historique, version unique et diff — sont ouvertes à tout
Member de l’espace de travail. Ce sont de pures inspections : rien sur le
trafic ne change, et aucun appel de modèle ou de fournisseur n’est fait.
4. Le revert restaure comme une nouvelle version
Un revert n’est pas un rembobinage.POST /api/guardrail/:id/revert avec un
corps to_version :
- Charge l’instantané de la version cible.
- Restaure le nom, le flag enabled, le flag default et les règles du guardrail actif à cet instantané — atomiquement, en une transaction.
- Ajoute une nouvelle ligne d’historique
revertcapturant l’état désormais actif.
v5 à v4 produit une nouvelle v6 dont le contenu égale
v4. Votre historique se lit v1 → v2 → … → v5 → v6(revert) — chaque étape
préservée, rien muté. Revenez à cet ancien instantané de nouveau plus tard et
vous obtenez une v7, et ainsi de suite.
Parce que la liaison vit sur la passerelle, un revert déplace chaque clé API
attachée à ce guardrail d’un coup — et le défaut de l’espace de travail, si
c’est lui — au prochain appel. Voir
attacher à une clé et
le défaut de l’espace de travail pour
la façon dont l’attachement se résout.
5. Rôles et rétention
| Action | Route | Rôle |
|---|---|---|
| Lister / lire les versions, diff | GET …/history, …/history/diff, …/history/:version | Member |
| Revert vers une version | POST …/revert | Developer+ |
Toutes les routes d’historique sont
/api/guardrail/* et s’authentifient avec
votre session / token d’accès sous X-Workspace-Id — jamais une clé de
relais sk-orca-.... Revenir en arrière porte le même contrôle Developer+ que
créer ou mettre à jour un guardrail, puisque cela change le trafic réel.6. Où aller ensuite
Test & éval avant de livrer
Prouvez une politique dans le sandbox et contre un corpus avant qu’elle ne
devienne une version que vous devriez rétablir.
Ajuster les faux positifs
La boucle flag-puis-promouvoir que le versioning rend sûre.
Actions : block, mask, flag
Ce que fait chaque règle une fois qu’une version est active.
Référence Guardrails
Le moteur complet — types de règles, étapes, presets et API complète.
Le versioning ici couvre la politique de contenu des guardrails. Le firewall
a sa propre surface de changement pour la politique d’outils ; pour la façon
dont les deux couches d’application diffèrent, voir
guardrails vs. firewall.
