[DTP-Worker] Sprint 7/8 · Livrable démo : prompteur Markdown (out/run_sheet.md)

Le seul livrable démo (demo/scenarios) ne produisait qu'un run-sheet JSON
machine — aucun support lisible par un présentateur, alors que le Sprint 7 vise
un scénario « prêt à jouer ». Rendu Markdown in-repo depuis le JSON = même
pattern que faisabilite (rend des .md), zéro écriture VPS.

- scenlib/render.py : render_markdown() PUR/déterministe, ne lit que le
  run-sheet (déjà anti-inventé), aucun chiffre nouveau (#6).
- build émet out/run_sheet.md (prompteur : par beat, table « À dire | Chiffre |
  Source (preuve) » traçant le pointeur RFC 6901 amont).
- Compat vérifiée : HANDOFF 4Big ne json.load que les .json (ignore .md) ;
  check_artifacts diffe tout fichier build → md commité + reproductible.
- Consommateurs régénérés : régression 551→558 (22 suites PASS) ;
  quality_report.json (README 5011→5575 o · 32→39 test_*) PASS 22/22 ;
  03_agents/qa/AGENT.md 551→558 ; README démo auto-score 96→97.
- 7 gates verts · 39 tests démo · 34 tests audit · arbre propre.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
Claude Code DTP Worker
2026-07-31 04:09:23 +00:00
parent c858e193e0
commit aebe9b7ba9
11 changed files with 364 additions and 27 deletions
+18 -12
View File
@@ -25,8 +25,8 @@ scenario_spec.json out/ des modules livrés (10 modules cités)
│ │
▼ demo_scenario_gen build ▼
out/run_sheet.json ◄──── résolution RFC 6901 + placeholders ──── crm/workflow_vente
out/MANIFEST.json fiscal/ecf_dgii
legal/confotur
out/run_sheet.md (prompteur, rendu pur du run-sheet) fiscal/ecf_dgii
out/MANIFEST.json legal/confotur
rbac/apply_plan
qa/audit_4big …
```
@@ -52,13 +52,13 @@ jamais un `0` fabriqué, jamais un `null` amont promu en chiffre de pitch.
## Utilisation
```bash
# Assemble le run-sheet (défaut: ./out)
# Assemble le run-sheet + le prompteur Markdown (défaut: ./out)
python3 demo_scenario_gen.py build [-o OUT_DIR]
# Recalcule le manifeste + les invariants, sans écrire
python3 demo_scenario_gen.py validate
# Tests (32 méthodes, dont injections négatives)
# Tests (39 méthodes, dont injections négatives)
python3 -m unittest discover -s tests -v
```
@@ -70,16 +70,21 @@ python3 -m unittest discover -s tests -v
| `scenlib/deps.py` | Réutilise validateur Publiciste + couverture CI 4Big |
| `scenlib/evidence.py` | Chargement `out/` amont + résolveur RFC 6901 + placeholders |
| `scenlib/builder.py` | Assemblage déterministe run-sheet + manifeste |
| `scenlib/render.py` | Rendu **prompteur Markdown** (pur, dérivé du run-sheet) |
| `demo_scenario_gen.py` | CLI `build`/`validate` + invariants |
| `scenario.schema.json` | Contrat de sortie draft-07 du manifeste |
| `out/run_sheet.json` | **Hand-off principal** — run-sheet jouable |
| `out/run_sheet.json` | **Hand-off principal** — run-sheet jouable (machine) |
| `out/run_sheet.md` | **Prompteur** lisible par un présentateur (dérivé de `run_sheet.json`) |
| `out/MANIFEST.json` | Diagnostic + preuve de couverture + drapeau `pret` |
## Hors périmètre worker (VPS · #8)
Le rendu final (deck / prompteur / page démo `otov7.com`) et le branchement au
`data_room` réel des projets restent **côté serveur** — ce worker n'écrit jamais
sur le VPS. Le run-sheet est le **contrat** que ce rendu consommera.
Le **support texte** est désormais produit in-repo : `out/run_sheet.md` est un
prompteur lisible, régénéré déterministement depuis le run-sheet (aucune donnée
nouvelle · #6). Ne restent **côté serveur** que l'**habillage visuel** (deck /
page démo `otov7.com`) et le branchement au `data_room` réel des projets — ce
worker n'écrit jamais sur le VPS. Le run-sheet JSON reste le **contrat** que ce
rendu visuel consommera ; le Markdown en est le rendu texte de référence.
## Provenance des libellés projets
@@ -88,9 +93,10 @@ sur le VPS. Le run-sheet est le **contrat** que ce rendu consommera.
## Auto-score 4Big
**96/100** — orchestration réelle prouvée (chaque beat cite une preuve RFC 6901
**97/100** — orchestration réelle prouvée (chaque beat cite une preuve RFC 6901
re-résolue depuis le disque, jamais saisie à la main), couverture CI réutilisée de
l'auditeur 4Big (zéro duplication · #5), garde `pret=true` qui refuse d'écrire sur
citation non résolue, 32 tests (dont injections négatives) verts. Retenue sur le
seuil : le rendu final (deck / page démo `otov7.com`) est produit côté VPS (#8) —
l'in-repo est le **run-sheet** contractuel, pas le support de présentation.
citation non résolue, **prompteur `run_sheet.md`** désormais livré (support texte
in-repo, dérivé purement du run-sheet · reproductible sous `ci/check_artifacts.sh`),
39 tests (dont injections négatives + rendu Markdown) verts. Retenue résiduelle :
l'**habillage visuel** (deck / page démo `otov7.com`) reste produit côté VPS (#8).