SIRRAT — Le Gardien du Pont¶
As-Sirāt (الصراط) — dans la tradition islamique, le pont tendu au-dessus de l'Enfer que toute âme doit traverser après le Jugement. Plus fin qu'un cheveu, plus tranchant qu'un rasoir : les purs le traversent à la vitesse de l'éclair, les autres tombent selon leurs œuvres.
Le code aussi sera jugé. Il traverse SIRRAT selon la qualité de ses tests et la signature du PV de recette.
Rôle de SIRRAT¶
SIRRAT est la plateforme de contrôle qualité et de validation des livraisons DYNORS. Son rôle n'est pas de construire ni de tester — c'est le CI/CD (GitLab CI) qui s'en charge. SIRRAT intervient en aval, pour décider si une version a le droit de franchir les portes vers la production.
CI Pipeline (build, test, scan)
│
▼ résultats
┌─────────────────────────────────────┐
│ SIRRAT (sirrat.dynors.com) │
│ │
│ • Reçoit les résultats CI │
│ • Évalue les Quality Gates │
│ • Autorise (ou bloque) les envs │
│ • Gère et archive les PV recette │
│ • Pilote les déploiements manuels │
└─────────────────────────────────────┘
│
▼ autorisé seulement si gate passé
INT (qualif technique) → RMOA (validation métier) → PRODUCTION
Nomenclature (ADR-0016)
Les anciens libellés RMOA DYNORS / RMOA CLIENT sont remplacés par INT puis RMOA (attributs operated_by, acceptance sur le déploiement). Voir ADR-0016.
Ce que SIRRAT n'est pas : - Pas un runner CI (GitLab CI s'en charge) - Pas un orchestrateur de build - Pas un outil de merge Git
Intégration GitLab (variables, fichiers versionnés, endpoints notify) : voir GitLab — intégration CI vers SIRRAT.
Les cercles — du chaos au paradis (cible ADR-0016)¶
| Cercle | Environnement | Caractère |
|---|---|---|
| 1 | LOCAL (machine dev) | Chaos permis — pas de SIRRAT |
| 2 | DEV (serveur DYNORS) | CI intégré — gate automatique |
| 3 | INT (intégration & qualification) | E2E / NRT / qualif technique |
| 4 | RMOA (validation métier) | Recette métier — PV recette |
| 5 | PRODUCTION | Paradis — PV signé + gate CTO |
LOCAL → DEV ──[Porte #1]──► INT ──[Porte #2]──► RMOA ──[Porte #3]──► PROD
tests auto qualif technique validation métier CTO + PV signé
Legacy
Documentation antérieure mentionnait RMOA DYNORS et RMOA CLIENT comme cercles séparés — remplacés par INT + RMOA avec attributs SIRRAT (ADR-0019).
Les 3 Portes Sacrées (Quality Gates)¶
Porte 1 — Jugement des Tests (DEV → INT)¶
Type : automatique et manuel (QA DYNORS)
Critères automatiques (bloquants) :
- Tests unitaires : 100 %
- Tests intégration : 100 %
- Couverture code : ≥ 70 %
- Scan sécurité : 0 vulnérabilité critique
Critères manuels (QA DYNORS) :
- Tests fonctionnels validés, 0 bug bloquant, ≤ 3 bugs majeurs
- Durée minimale en RMOA : 3 jours
Porte 2 — Validation métier (INT → RMOA)¶
Type : 100 % manuel (Tech Lead + parties prenantes)
- Validation Tech Lead / CTO DYNORS
- Release notes et guide de test fournis (client ou MOA selon
acceptance— ADR-0019)
Porte 3 — Sceau du CTO (RMOA → PRODUCTION)¶
Type : manuel + vérification PV
- PV de Recette CLIENT signé (bloquant absolu)
- Backup PROD récent (< 24 h)
- Plan de rollback documenté
- Fenêtre de maintenance planifiée
PV de Recette¶
Le PV de recette est le document contractuel qui ouvre la porte de la production.
1. SIRRAT génère automatiquement le PV (version, features, tests, bugs)
2. Client reçoit une notification
3. Parties prenantes testent sur **RMOA** (7–14 jours selon contrat)
4. Client signe dans SIRRAT (OTP / DocuSign / scan)
5. PV scellé (hash SHA-256, horodatage, archivage 7 ans)
6. Porte 3 débloquée → CTO valide → PRODUCTION
Modes de signature :
| Mode | Description |
|---|---|
| OTP électronique | Code envoyé par email/SMS, saisi dans SIRRAT |
| DocuSign | Intégration API DocuSign, certificat archivé |
| Scan PDF | PDF signé papier uploadé dans SIRRAT (fallback) |
Indice Qualité (ex-Karma)¶
SIRRAT calcule un score 0–100 à chaque déploiement. Il sert d'indicateur de tendance pour l'équipe — ce n'est pas un critère de blocage. Les portes (tests, PV) sont les seuls bloquants réels.
| Score | Niveau | Rang |
|---|---|---|
| 0–20 | Critique | F |
| 21–40 | Dégradé | D |
| 41–60 | En progression | C |
| 61–80 | Correct | B |
| 81–95 | Bon | A |
| 96–100 | Excellent | S |
Événements comptabilisés :
| Événement | Impact |
|---|---|
| Tests unitaires 100 % | +30 |
| Tests intégration 100 % | +20 |
| Couverture > 80 % | +15 |
| 0 vulnérabilité critique | +10 |
| Déploiement PROD sans incident | +50 |
| Bug critique en production | −20 |
Intégrations SIRRAT¶
| Outil | Usage |
|---|---|
| GitLab CI | Réception résultats tests/scans via webhook, déclenchement déploiements autorisés |
| Slack | Notifications (#dev-X, #qa-X, #prod-alerts) |
| Grafana | Dashboard monitoring post-déploiement |
| Sentry | Tracking d'erreurs par environnement |
| DocuSign | Signature électronique légale des PV |
| SendGrid | Emails de notification aux clients |
Positionnement dans le pipeline¶
SIRRAT reçoit les résultats du CI et autorise les déploiements. Les déploiements restent dans GitLab CI (notify + promotion manuelle selon env) — SIRRAT est le verrou, pas l'exécuteur.
git push → GitLab CI (build, test, scan, docker) → SIRRAT évalue
│
autorisé ? ───┤
Oui ───► deploy job (manuel ou auto)
Non ───► bloqué
Pour RMOA et PROD, le déploiement est toujours manuel (bouton GitLab CI ou action SIRRAT) après confirmation des gates.
Déploiement projet — SIRRAT Forge (canonique)¶
Déprécié — sirrat.config.yml dans les repos app
Interdit pour les nouveaux satellites : la config déploiement (cercles, gates, secrets, URLs) vit dans les templates SIRRAT Forge (forge.sirrat.dynors.com), pas dans le repo applicatif. Exception : repo dynors-internal/applications/sirrat/ (plateforme).
Chaque app satellite doit avoir :
.gitlab-ci.yml(build, test, scan, jobs notify SIRRAT)docker-compose.local.yml+.env.local(SIRRAT_ENABLED=falseen local)- Déclaration dans SIRRAT Forge (seed :
CORE_APP_CODE, port, profil)
~~sirrat.config.yml~~ — legacy (ne plus créer)¶
Archive — ancien modèle fichier repo (lecture historique uniquement)
Chaque projet satellite **ne doit plus** placer ce fichier à sa racine :sirrat:
version: "2.0"
project:
id: supergest-001
name: "SuperGest"
client: "Client Dakar"
scenario: on-premise # managed | on-premise | cloud-client | regie
environments:
dev:
url: https://dev-supergest.dynors.com
branch: develop
auto_deploy: true
rmoa-dynors:
url: https://rmoa-supergest.dynors.com
quality_gate: gate-1
rmoa-client:
url: https://recette.supergest.client.sn
quality_gate: gate-2
pv_recette:
enabled: true
signatories:
- email: "moa@client.sn"
role: "MOA Client"
- email: "cto@dynors.com"
role: "CTO DYNORS"
production:
url: https://supergest.client.sn
quality_gate: gate-3
Stack technique¶
| Composant | Technologie |
|---|---|
| Backend | Spring Boot + dynors-security + dynors-db |
| Frontend | Angular (standalone) |
| Base de données | PostgreSQL multi-tenant |
| Cache | Redis (état des gates, sessions) |
| Déploiement | Docker Compose (VPS DYNORS dédié) |
Roadmap¶
| Phase | Contenu | Statut |
|---|---|---|
| v1 | Quality gates manuels, PV recette OTP, webhook GitLab CI | À développer |
| v2 | Indice Qualité, dashboard, Grafana/Sentry | Planifié |
| v3 | Multi-projets, reporting client, DocuSign, mobile | Futur |
Dernière mise à jour : 2026-04-30