[DTP-Worker] Sprint 8 · Générateur Run-book de déploiement VPS unifié (7 phases · 20 modules gated · couverture bijective vs CI) (DevOps · roadmap L73)

Agrégateur de méta-niveau au-dessus du run-book RBAC : ordonne le déploiement
VPS de TOUS les livrables gated en 7 phases (Prérequis → DocTypes → RBAC →
Workflow/métier → Frontend → Contenu → Vérification QA), avec graphe de
dépendances inter-phases acyclique et confirmations préalables sourcées.

Anti-invention (#6) : périmètre dérivé du CI (parse_ci réutilisé), couverture
bijective module→phase (un module gated non planifié OU un module planifié non
gated → refus), SoD (auto-exclusion), zéro chiffre métier (confirmations
sourcées via audit_5d D1.1/D1.2/D1.3/D2.3 + endpoint OTOIA).

Vérifs : 29/29 tests module (dont 14 injections négatives) · audit_4big PASS
20/20 à 100 · régression run 20/20 suites · 503 tests · 0 échec · gate CI local
vert. CI job devops-deploy-runbook-tests + gate ; enregistrement audit_4big
(19→20) ; plan régression régénéré (19→20 suites).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
Claude Code DTP Worker
2026-07-30 11:41:43 +00:00
parent 4b0752906d
commit 58ed555db0
19 changed files with 1647 additions and 17 deletions
@@ -4,7 +4,7 @@
"audit": "OTO QA · Audit 4Big Qualité",
"version": "1.0",
"verdict": "PASS",
"modules_audited": 19,
"modules_audited": 20,
"min_score": 100,
"pass_score": 95,
"coverage_ok": true,
@@ -5,8 +5,8 @@
"pass_score": 95,
"coverage": {
"ok": true,
"ci_modules_count": 19,
"registry_modules_count": 19,
"ci_modules_count": 20,
"registry_modules_count": 20,
"missing_in_registry": [],
"missing_in_ci": [],
"not_in_gate": [],
@@ -760,6 +760,48 @@
}
]
},
{
"id": "devops-deploy-runbook",
"path": "devops/deploy_runbook",
"sprint": "S8",
"archetype": "generator",
"applicable_weight": 100,
"earned_weight": 100,
"score": 100,
"verdict": "PASS",
"checks": [
{
"criterion": "DOC",
"weight": 20,
"passed": true,
"evidence": "README.md (5414 octets)"
},
{
"criterion": "CONTRAT",
"weight": 20,
"passed": true,
"evidence": "deploy.schema.json"
},
{
"criterion": "TESTS",
"weight": 25,
"passed": true,
"evidence": "29 méthodes test_* dans 1 fichier(s) (seuil 8)"
},
{
"criterion": "CLI",
"weight": 15,
"passed": true,
"evidence": "deploy_runbook_gen.py (argparse + __main__)"
},
{
"criterion": "HANDOFF",
"weight": 20,
"passed": true,
"evidence": "MANIFEST + 1 artefact(s) JSON valides"
}
]
},
{
"id": "qa-regression",
"path": "qa/regression",
@@ -798,14 +840,14 @@
"criterion": "HANDOFF",
"weight": 20,
"passed": true,
"evidence": "MANIFEST + 1 artefact(s) JSON valides"
"evidence": "MANIFEST + 2 artefact(s) JSON valides"
}
]
}
],
"totals": {
"modules": 19,
"pass": 19,
"modules": 20,
"pass": 20,
"fail": 0,
"min_score": 100,
"max_score": 100,
@@ -815,6 +857,6 @@
"notes": [
"Audit de MÉTA-NIVEAU : chaque note de module est CALCULÉE depuis des faits du dépôt (présence README/schéma, nombre de méthodes test_*, entrypoint CLI, intégrité out/) — jamais saisie à la main (#6).",
"Un critère non applicable à l'archétype d'un module est EXCLU du dénominateur (pas de pénalité pour un hand-off qu'un module de contrat n'a jamais vocation à produire) ; les poids restants sont renormalisés à 100.",
"Le verdict global est PASS si et seulement si les 18 modules atteignent ≥ 95/100 ET la couverture == 100% des livrables gated (hors auditeur)."
"Le verdict global est PASS si et seulement si TOUS les modules du registre atteignent ≥ 95/100 ET la couverture == 100% des livrables gated (hors auditeur)."
]
}