[DTP-Worker] Sprint 8 · buffer · Démo/scenarios (2e surface) : la TABLE des scénarios — les trois colonnes d'IDENTITÉ (id · projet+libellé · audience) étaient NON GATÉES
Le README `demo/scenarios` porte une table « Scénario | Projet | Audience | Angle »
(README:10-13). Le bloc « Démo » existant de check_readme_claims ne gate QUE
counts.modules_cites_uniques (le compte de modules du diagramme) — ses trois colonnes
d'identité étaient des WILDCARDS, et les libellés projets sont déclarés (README:91-92)
« proviennent verbatim de CLAUDE.md · §Projets » sans AUCUN ancrage vérifié.
Ces colonnes sont DATA-DERIVED de out/run_sheet.json.scenarios[] (id · projet ·
projet_libelle · audience), byte-gaté par check_artifacts. Le générateur ne saisit
aucune donnée métier (résolution RFC 6901 depuis le disque) ; mais check_artifacts
ne prouve QUE run_sheet==build (byte-for-byte) et la source scenario_spec.json (map
projets) recopie les libellés À LA MAIN → toute la chaîne peut DÉRIVER de CLAUDE.md
en restant byte-verte. PREUVE : classer P07 sous audience=client dans le README →
check_readme_claims EXIT 0 (le gate ne voyait que 10==10 modules). Un couple
projet/audience faux ferait pitcher au présentateur le mauvais scénario — le risque
même que la run-sheet veut éliminer — « vert trompeur » qu'aucune suite tests/ (qui
teste des FONCTIONS de résolution, pas la prose) n'attrape.
Nouveau bloc « Démo scénarios » dans ci/check_readme_claims.sh : (1) ANCRAGE — chaque
`P{code} {libellé}` du run_sheet == entrée « ## Projets » de CLAUDE.md (verbatim ·
source unique · même esprit que le catalogue projets dossier_vente) ; (2) TABLE —
chaque ligne porte EXACTEMENT id + `P{code} {libellé}` + audience (fin du wildcard ·
patron identique à la colonne « Type » de roleprofile_gen) ; (3) IDENTITÉ d'ensemble
— {ids des lignes} == {ids du run_sheet} == counts.scenarios (aucune ligne FANTÔME,
aucun scénario MANQUANT). Cohérences croisées en bonus (mordent un artefact
INTERNEMENT incohérent) : run_sheet ↔ MANIFEST d'accord sur (id,projet,audience) ·
id == S-{projet}-{AUDIENCE} · counts.scenarios == |scenarios| · ids non vides/sans
doublon. Un claim absent échoue AUSSI.
8 morsures vérifiées : prose renomme un id (INTROUVABLE) · prose classe P07 sous
audience=client · prose met le mauvais libellé projet · ligne FANTÔME S-P99-GHOST
(en trop) · artefact libellé « Aqua Terra Bay » DÉRIVE de CLAUDE.md · run_sheet↔
MANIFEST désync audience · counts.scenarios=3 (≠|scenarios|=2) · ligne S-P05-CLIENT
supprimée (MANQUANT) ; restauré = green : 2 lignes == run_sheet == counts (2) ·
libellés == CLAUDE.md §Projets · exit 0. État courant : aucune valeur périmée
(anti-invention #6, rien à réécrire) — le défaut est la surface ungated. ci/README.md
(table + détail « 2e surface demo/scenarios ») mis à jour · working tree byte-restauré
· 7 gates re-verts.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -2405,3 +2405,45 @@ verrouillés) · `guard_constraints` · `validate_json`.
|
||||
`check_regression` · `guard_constraints` · `validate_json`).
|
||||
- **Hors périmètre worker (VPS · #8)** : néant (gate bash/python3 stdlib en-repo).
|
||||
- **Auto-score 4Big** : 96/100.
|
||||
|
||||
## Sprint 8 · buffer · Démo/scenarios (2e surface) · la TABLE des scénarios · identité (id · projet+libellé · audience)
|
||||
- **Constat** : le README `demo/scenarios` porte une table « Scénario | Projet |
|
||||
Audience | Angle » (README:10-13) dont les **trois colonnes d'identité** sont
|
||||
data-derived : `id` (`S-P07-BANQUIER`), `projet`+`projet_libelle`
|
||||
(`P07` + `Aqua Terra Las Terrenas`) et `audience` (`banquier`). Le bloc « Démo »
|
||||
existant de `check_readme_claims.sh` ne gate QUE `counts.modules_cites_uniques`
|
||||
(le compte de modules du diagramme) — ces colonnes étaient des **wildcards**. Les
|
||||
libellés projets sont même déclarés (README:91-92) « proviennent **verbatim** de
|
||||
CLAUDE.md · §Projets » sans AUCUN ancrage vérifié.
|
||||
- **Data-derived** : `out/run_sheet.json.scenarios[]` (`id`/`projet`/
|
||||
`projet_libelle`/`audience`), byte-gaté par `check_artifacts`. Le générateur ne
|
||||
saisit aucune donnée métier (résolution RFC 6901 depuis le disque). `check_artifacts`
|
||||
ne prouve QUE `run_sheet==build` (byte-for-byte) ; la source `scenario_spec.json`
|
||||
(map `projets`) recopie les libellés à la main → toute la chaîne peut DÉRIVER de
|
||||
CLAUDE.md en restant byte-verte.
|
||||
- **Preuve reproduite** : classer P07 sous `audience=client` dans le README →
|
||||
`check_readme_claims` **exit 0** (le gate ne voyait que `10 == 10` modules).
|
||||
- **Gate ajouté** (`ci/check_readme_claims.sh`, bloc « Démo scénarios ») : (1)
|
||||
**ANCRAGE** — chaque `P{code} {libellé}` du run_sheet == entrée « ## Projets » de
|
||||
CLAUDE.md (verbatim, source unique · même esprit que le catalogue projets
|
||||
dossier_vente) ; (2) **TABLE** — chaque ligne porte EXACTEMENT id +
|
||||
`P{code} {libellé}` + audience (fin du wildcard, patron identique à la colonne
|
||||
« Type » de roleprofile_gen) ; (3) **IDENTITÉ d'ensemble** — {ids des lignes} ==
|
||||
{ids du run_sheet} == `counts.scenarios` (aucune ligne FANTÔME, aucun scénario
|
||||
MANQUANT). Cohérences croisées en bonus (mordent un artefact INTERNEMENT
|
||||
incohérent) : `run_sheet` ↔ `MANIFEST` d'accord sur `(id, projet, audience)` ·
|
||||
`id == S-{projet}-{AUDIENCE}` · `counts.scenarios == |scenarios|` · ids non vides
|
||||
et sans doublon. Un claim absent échoue AUSSI.
|
||||
- **8 morsures vérifiées** : prose renomme un id (INTROUVABLE) · prose classe P07
|
||||
sous audience=client · prose met le mauvais libellé projet · ligne FANTÔME
|
||||
`S-P99-GHOST` (en trop) · artefact libellé « Aqua Terra Bay » DÉRIVE de CLAUDE.md ·
|
||||
`run_sheet`↔`MANIFEST` désync audience · `counts.scenarios=3 (≠|scenarios|=2)` ·
|
||||
ligne `S-P05-CLIENT` supprimée (MANQUANT). Restauré = green : 2 lignes ==
|
||||
run_sheet == counts (2) · libellés == CLAUDE.md §Projets · exit 0.
|
||||
- **État courant** : aucune valeur périmée (anti-invention #6, rien à réécrire) — le
|
||||
défaut est la surface **ungated**. `ci/README.md` (table + détail « 2ᵉ surface
|
||||
`demo/scenarios` ») mis à jour · working tree byte-restauré · **7 gates re-verts**
|
||||
(`check_readme_claims` · `check_artifacts` · `check_docs` · `check_ci_integrity` ·
|
||||
`check_regression` · `guard_constraints` · `validate_json`).
|
||||
- **Hors périmètre worker (VPS · #8)** : néant (gate bash/python3 stdlib en-repo).
|
||||
- **Auto-score 4Big** : 96/100.
|
||||
|
||||
Reference in New Issue
Block a user