[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
@@ -0,0 +1,82 @@
# Rapport de session · 2026-07-30 · session 21
## Tâche
**Sprint 7 · CRM + Faisabilité** — Générateur des **Scénarios démo (run-sheet de
pitch)** (roadmap `04_roadmap/ROADMAP_8_WEEKS_OR_LESS.md` **l.68** :
« CRM + Faisabilité : Scénarios démo (**P07 pitch banquier · P05 client ready**) »).
C'est le **dernier volet Sprint 7 réalisable en repo**. Les deux autres volets
(polish `otov7.com` côté Frontend, branchement au `data_room` réel des projets)
dépendent du site live / des archives serveur — hors périmètre worker (#8).
## Décision d'architecture
**Orchestrateur de méta-niveau**, pas un contenu marketing écrit à la main. Un
scénario démo est une suite de **beats** (scènes) ; chaque beat cite une **preuve**
= un **pointeur RFC 6901** vers un hand-off `out/` d'un module **déjà livré**. Le
générateur **résout** la valeur à la construction. Conséquences :
- **Zéro invention (#6)** : aucune valeur chiffrée n'est écrite dans le spec ; une
valeur introuvable devient un placeholder `{{module:file#pointer}}` — jamais un
`0` fabriqué, ni un `null` amont promu en chiffre de pitch.
- **Zéro duplication (#5)** : réutilise le validateur maison du Publiciste **et**
la preuve de couverture CI de l'auditeur 4Big (`q4lib/registry.py`) pour
garantir qu'une démo ne s'appuie QUE sur des modules **gated** par le CI.
## Fichiers créés — `05_deliverables_mvp/demo/scenarios/`
- `scenario_spec.json` — 2 scénarios · 12 beats · 23 pointeurs de preuve
(**0 chiffre en dur** · libellés projets P05/P07 verbatim de CLAUDE.md §Projets)
- `scenlib/{__init__,deps,evidence,builder}.py`
- `deps` réutilise `validator.validate` (Publiciste) + `registry.ci_module_paths`
(audit 4Big) · `evidence` charge les `out/` amont + résout les pointeurs
RFC 6901 · `builder` assemble run-sheet + manifeste de façon déterministe
- `demo_scenario_gen.py` — CLI `build`/`validate` + **7 familles d'invariants**
- `scenario.schema.json` — contrat de sortie draft-07
- `out/{run_sheet,MANIFEST}.json` — hand-off
- `tests/test_demo_scenario.py`**32 tests** (dont 9 injections négatives)
- `README.md` · `.gitignore`
## Fichiers modifiés
- `.gitea/workflows/ci.yml` : job `demo-scenario-tests` + ajout au `gate`.
- `qa/audit_4big/quality_spec.json` : enregistrement du module `demo/scenarios`
(archétype `generator`) + prose « 17 → 18 modules ».
- `qa/audit_4big/tests/test_audit_4big.py` : `totals.modules` **17 → 18**
(2 assertions) — l'auditeur doit tracer chaque nouveau livrable, sinon sa
**preuve de couverture bijective rougit** (garde-fou anti-omission).
- `qa/audit_4big/out/*` régénéré : **verdict PASS · 18/18 modules ≥ 95 (min 100)**.
## Anti-invention (cœur · #6)
Une valeur du run-sheet **ne peut pas être posée** : `_check_anti_invention`
**re-résout indépendamment** chaque pointeur depuis le disque et compare
(valeur + statut résolu) au run-sheet. Recoupe aussi spec ↔ run-sheet (mêmes
pointeurs, même ordre). Un `null` amont (`condition: null` d'une transition) est
traité comme **non résolu** → placeholder, jamais promu en chiffre.
## Résultat
Run-sheet `pret=true` : **2 scénarios · 12 beats · 23/23 citations résolues ·
10 modules cités tous gated**. Valeur = **contrat déterministe** qu'un rendu VPS
(deck / prompteur / page démo) consommera sans risque d'invention.
## Vérifications
- 32/32 tests du module ; 34/34 tests audit_4big (après passage à 18 modules).
- Régression complète : **474 tests verts** (442 → +32), **0 module en échec**.
- Guards CI locaux verts : `guard_constraints` · `validate_json` · `check_docs`.
- `ci.yml` : YAML valide · job + `needs` du gate présents.
- Builds déterministes (double build identique).
## Hors périmètre worker (VPS · #8)
Rendu final (deck / prompteur / page démo `otov7.com`) + branchement au
`data_room` réel → agent Frontend / DevOps. Le run-sheet est le **contrat**.
## Auto-score 4Big
**96/100** — orchestrateur cross-module, anti-invention prouvée par re-résolution,
couverture CI réutilisée, injections négatives. 4 : le rendu jouable (deck) reste
côté VPS, non démontrable en repo.