[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:
@@ -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)."
|
||||
]
|
||||
}
|
||||
|
||||
@@ -79,11 +79,12 @@
|
||||
{ "id": "seo", "path": "seo", "sprint": "S6", "archetype": "generator", "source": "roadmap Sprint 6 · SEO trilingue mots-clés/schema.org/hreflang · ci.yml seo-tests" },
|
||||
{ "id": "frontend-chat-otoia", "path": "frontend/chat_otoia", "sprint": "S6", "archetype": "generator", "source": "roadmap Sprint 6 · Chat OTOIA embarqué (Custom Block) · ci.yml chat-otoia-tests" },
|
||||
{ "id": "demo-scenarios", "path": "demo/scenarios", "sprint": "S7", "archetype": "generator", "source": "roadmap Sprint 7 · Scénarios démo (P07 banquier / P05 client) · ci.yml demo-scenario-tests" },
|
||||
{ "id": "qa-regression", "path": "qa/regression", "sprint": "S8", "archetype": "generator", "source": "roadmap Sprint 8 · Regression tests exhaustifs (matrice méta-niveau) · ci.yml qa-regression-tests" }
|
||||
{ "id": "qa-regression", "path": "qa/regression", "sprint": "S8", "archetype": "generator", "source": "roadmap Sprint 8 · Regression tests exhaustifs (matrice méta-niveau) · ci.yml qa-regression-tests" },
|
||||
{ "id": "devops-deploy-runbook", "path": "devops/deploy_runbook", "sprint": "S8", "archetype": "generator", "source": "roadmap Sprint 8 · DevOps Deployment production complet (run-book VPS unifié) · ci.yml devops-deploy-runbook-tests" }
|
||||
],
|
||||
"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)."
|
||||
]
|
||||
}
|
||||
|
||||
@@ -4,8 +4,8 @@
|
||||
"matrix": "OTO QA · Matrice de régression exhaustive",
|
||||
"version": "1.0",
|
||||
"verdict": "PASS",
|
||||
"suites": 19,
|
||||
"test_methods": 474,
|
||||
"suites": 20,
|
||||
"test_methods": 503,
|
||||
"coverage_ok": true,
|
||||
"artifacts": [
|
||||
"regression_plan.json"
|
||||
|
||||
@@ -17,8 +17,8 @@
|
||||
],
|
||||
"coverage": {
|
||||
"ok": true,
|
||||
"suites_count": 19,
|
||||
"gated_in_ci": 20,
|
||||
"suites_count": 20,
|
||||
"gated_in_ci": 21,
|
||||
"self_module_excluded": "qa/regression",
|
||||
"self_module_gated": true,
|
||||
"missing_tests_dir": [],
|
||||
@@ -69,6 +69,17 @@
|
||||
"test_files": 1,
|
||||
"test_methods": 32
|
||||
},
|
||||
{
|
||||
"id": "devops.deploy_runbook",
|
||||
"path": "devops/deploy_runbook",
|
||||
"jobs": [
|
||||
"devops-deploy-runbook-tests"
|
||||
],
|
||||
"in_gate": true,
|
||||
"has_tests_dir": true,
|
||||
"test_files": 1,
|
||||
"test_methods": 29
|
||||
},
|
||||
{
|
||||
"id": "faisabilite.bancable",
|
||||
"path": "faisabilite/bancable",
|
||||
@@ -237,9 +248,9 @@
|
||||
],
|
||||
"under_threshold": [],
|
||||
"totals": {
|
||||
"suites": 19,
|
||||
"test_files": 19,
|
||||
"test_methods": 474,
|
||||
"suites": 20,
|
||||
"test_files": 20,
|
||||
"test_methods": 503,
|
||||
"min_methods": 10,
|
||||
"under_threshold": 0
|
||||
},
|
||||
|
||||
Reference in New Issue
Block a user