[DTP-Worker] Sprint 7 · Générateur Scénarios démo (run-sheet P07 banquier / P05 client) (CRM+Faisabilité · roadmap L68)

Orchestrateur méta-niveau : compose les hand-offs out/ des 10 modules déjà
livrés en un run-sheet de démo jouable, via pointeurs RFC 6901 résolus à la
construction (zéro chiffre en dur · #6). Réutilise le validateur Publiciste et
la preuve de couverture CI de l'auditeur 4Big (#5) — une démo ne s'appuie que
sur des modules gated. Enregistre demo/scenarios dans l'audit 4Big (17→18,
verdict PASS 18/18 à 100). 32 tests (9 injections négatives) · régression 474
tests verts · guards CI verts · builds déterministes.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
Claude Code DTP Worker
2026-07-30 10:39:24 +00:00
parent a517619432
commit cac65386ab
19 changed files with 1691 additions and 11 deletions
@@ -259,7 +259,7 @@ class BuildTest(unittest.TestCase):
def test_real_build_passes_gate(self):
self.assertEqual(self.report["verdict"], "PASS")
self.assertEqual(self.report["totals"]["fail"], 0)
self.assertEqual(self.report["totals"]["modules"], 17)
self.assertEqual(self.report["totals"]["modules"], 18)
self.assertGreaterEqual(self.report["totals"]["min_score"], 95)
def test_invariants_clean_on_real_report(self):
@@ -318,7 +318,7 @@ class InvariantGuardTest(unittest.TestCase):
m["verdict"] = "PASS" if m["score"] >= 95 else "FAIL"
bad["totals"]["fail"] = sum(1 for x in bad["modules"]
if x["verdict"] != "PASS")
bad["totals"]["pass"] = 17 - bad["totals"]["fail"]
bad["totals"]["pass"] = 18 - bad["totals"]["fail"]
bad["verdict"] = "FAIL"
errs = gen.check_invariants(bad, self.spec)
# Le rapport est cohérent en interne mais porte un FAIL → INV7 le signale.