Aller au contenu principal

Approvals

Workflow d'approbation obligatoire ou optionnel par environnement et par type d'action. Sans approbation, aucune execution destructive ne part en prod.

Quand l'utiliser

Toutes les equipes >5 personnes qui touchent a un environnement prod. L'approbation transforme un patch en revue de code : un autre humain valide avant execution.

Workflow rapide

  1. Approbations -> Politique (admin projet) : matrice action × environnement. Ex : mass_patch + prod = required, min approvers = 2.
  2. Un user demande une action (Mass Patch, Seed, Bridge). Si policy dit "required", Auralith renvoie 202 Accepted avec requestId au lieu d'executer.
  3. Les approbateurs autorises recoivent un email send_approval_request.
  4. Ouvrir Approbations, voir le diff preview, approuver / rejeter / commenter.
  5. Quand min_approvers atteints, l'action devient executable. L'auteur recoit send_approval_decision. Il peut alors lancer l'execution.
  6. Si rejete : statut terminal, l'execution est bloquee. Re-creer un nouveau patch si necessaire.

Concepts cles

  • ApprovalPolicy : par projet, par action × environment_tag. Reglages : required, min_approvers, allowed_approver_roles.
  • ApprovalRequest : id, requester, target (patch / seed / bridge), status (pending / approved / rejected / expired), policy_snapshot (gele a la creation), expires_at.
  • policy_snapshot : la policy effective au moment de la demande, pour garantir l'integrite si l'admin la modifie apres coup.

Pieges courants

  • Self-approve : par defaut un requester ne peut pas s'approuver lui-meme. Reglage par policy si vous tenez a l'autoriser (deconseille).
  • Expired : 7 jours par defaut. Au-dela, demande caduque, re-emettre.
  • Roles d'approbateur : admin projet par defaut. Les dev ne peuvent pas approuver sans modification de policy.

API

# Lister approbations en attente
curl https://app.auralith.io/api/v1/projects/{pid}/approvals?status=pending

# Approuver
curl -X PATCH https://app.auralith.io/api/v1/approvals/{id} \
-d '{"decision":"approve","reason":"reviewed diff"}'

Voir aussi