[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
+59
View File
@@ -1,5 +1,64 @@
# Activity Log · 2026-07-31 · Claude Code DTP
## Session `20260731_040004` · Sprint 7/8 · Livrable démo : ajout du **prompteur Markdown** (`out/run_sheet.md`) — le support texte lisible manquait au « scénario démo prêt à jouer »
**Tâche** : **Sprint 7 l.68** (« CRM + Faisabilité : Scénarios démo P07 banquier ·
P05 client ready ») × **Sprint 8 buffer**. Après audit : les 7 gates CI étaient
verts, 15 promesses `in_repo`, faisabilité 4 volets complète. Le seul livrable démo
(`demo/scenarios`) ne produisait qu'un **run-sheet JSON machine** — aucun support
**lisible par un présentateur**. Son propre README plafonnait l'auto-score à 96/100
en qualifiant le « prompteur » de **hors périmètre (VPS)**. Or rendre un Markdown
in-repo depuis le JSON est exactement le pattern déjà utilisé par `faisabilite`
(rend des `.md`) — **aucune écriture VPS**. Gap réel, borné, à forte valeur.
### Livraison
- **`scenlib/render.py`** (nouveau) — `render_markdown(run_sheet) -> str` **pur et
déterministe**. Ne lit **que** le run-sheet (déjà résolu, déjà anti-inventé) :
aucun chiffre nouveau, aucun recalcul (anti-invention #6). `_fmt` : bool→oui/non,
liste→jointe, placeholder survivant rendu entre back-ticks (jamais promu en nombre).
- **`demo_scenario_gen.py build`** émet désormais `out/run_sheet.md` en plus des deux
JSON. Le rendu est un prompteur par scénario : en-tête (audience/projet/durée/
objectif), puis chaque beat en table « À dire | Chiffre | Source (preuve) » —
chaque ligne trace son pointeur RFC 6901 amont.
- **`out/run_sheet.md`** (nouveau, commité) — 2 scénarios · 12 beats · 24 min cumulés.
### Compatibilité architecture (vérifiée AVANT d'écrire)
- **HANDOFF 4Big** (`q4lib/criteria.py:91`) ne `json.load` que les fichiers `.json`
un `.md` dans `out/` est **ignoré**, aucune casse du critère.
- **`ci/check_artifacts.sh`** diffe **tout** fichier produit par `build` → il exige
désormais `run_sheet.md` **commité + reproductible byte-for-byte** (render
déterministe ⇒ OK). Preuve de morsure implicite : fichier non suivi ⇒ gate exit 1
(constaté puis corrigé par `git add`).
### Consommateurs régénérés (dérive maîtrisée)
- +7 méthodes test (`TestRenderMarkdown`) → **régression 551→558 tests** (22 suites,
PASS) : `regression run` + `build` régénérés (`regression_run/plan/MANIFEST.json`).
- `demo/scenarios` : README `5011→5575` octets + `32→39` test_* → **`quality_report.json`
régénéré** (evidence DOC+TESTS) · verdict **PASS · 22/22 · min 100** inchangé.
- `03_agents/qa/AGENT.md` : verdict agrégé `551→558` (gate `check_readme_claims` vert).
- README démo : Fichiers (+`render.py`, +`run_sheet.md`), chaîne de valeur, « hors
périmètre » (seul l'**habillage visuel** reste VPS), auto-score **96→97**.
### Vérifs
| Contrôle | Résultat |
|---|---|
| 7 gates CI (`guard`/`json`/`docs`/`artifacts`/`regression`/`readme_claims`/`ci_integrity`) | ✅ exit 0 |
| Tests démo | ✅ 39/39 |
| Tests audit_4big | ✅ 34/34 |
| Régression exhaustive | ✅ 22/22 suites · 558 tests · PASS |
| `run_sheet.md` reproductible (build frais == commité) | ✅ (gate artifacts) |
| Arbre de travail | ✅ 0 fichier untracked |
**Hors périmètre worker (VPS · #8)** : habillage visuel deck / page démo `otov7.com` +
branchement `data_room` réel — inchangé. Le prompteur texte est le rendu de référence
in-repo que ce visuel habillera.
**Auto-score 4Big** : 97/100.
## Session `20260731_033001` · Buffer S8 · « Vert trompeur » : la fiche QA affichait un « verdict agrégé courant » PÉRIMÉ (21/534) en se disant « jamais compté à la main » — hors du périmètre du gate README
**Tâche** : **Sprint 8 · buffer L75** (DevOps CI/CD · QA). Roadmap fonctionnellement