# Atelier narratif v3 — « Déroulé »

Réinterprétation du 01/10/2026. Statut : **analyse et proposition, rien n'est
codé**. Fait suite à la v1 (`narrative/`, l'atelier narratif, synthèse dans
`docs/synthese-chantier-atelier-narratif.md`) et à la v2 (`fil-rouge/`, Fil
rouge, `docs/fil-rouge.md`).

---

## 1. En bref

- **Les deux versions ont fait le même pari, et c'est lui qui coince.** Elles
  *devinent* ton histoire à partir des règles du jeu : qui lit quelle condition,
  qui écrit quel effet. Toi, tu voulais l'*écrire*, comme dans Taskmaster, avec
  les vrais éléments du jeu sous la main.
- **La preuve la plus nette** : tes deux carnets contiennent zéro intrigue, zéro
  idée, zéro lien. Ils ne gardent que 114 positions de cartes déplacées, dont 106
  dans la v1 et 8 dans Fil rouge. Le temps est passé à ranger ce que l'outil
  avait mal rangé, pas à écrire.
- **La v3 renverse le sens : ton déroulé d'abord, le jeu en preuve.**
  - L'ordre de l'histoire est le tien : déclaré, gardé, jamais recalculé.
  - Le jeu publié vient s'accrocher aux moments. Ses textes, conditions et
    récompenses sont lus en direct.
  - L'outil vérifie que le jeu peut vraiment jouer ton ordre, et explique pourquoi
    en mots simples.
- **La quête de Bob reste présente d'office.** Tu la retrouves déjà rangée
  (§6). Tu corriges en glissant, et ta correction reste.
- **Ce qui ne change pas** :
  - la lecture du jeu publié seulement ;
  - aucun risque pour le jeu : un seul fichier écrit, le carnet ;
  - le thème sombre, les liens vers le gestionnaire, le tactile.
- **Fil rouge quitte le gestionnaire** ; la v3 prend son bouton.

---

## 2. Ta demande, relue

La demande de départ (29/09), découpée :

| Ce que tu as écrit | Ce que ça voulait dire |
|---|---|
| « basé et adapté sur le générateur de narrative … Taskmaster3000 » | Le modèle Taskmaster : des **segments que l'auteur écrit** (titre, résumé, acteurs, lieu, conditions, conséquences), reliés entre eux. |
| « interagir directement avec les données réelles … ou un simple arbre visuel avec nœuds et segments non connecté » | Le **minimum** utile : un arbre que tu écris. Le **plus** : que ses champs viennent du vrai jeu. |
| « acteurs, conditions, récompenses, salles concernées » | Les champs d'un segment. |
| « la liste des récompenses à nommer et sélectionner directement » | **Choisir** dans les vraies listes du jeu au lieu de retaper. |
| « une simple lecture des éléments pour sélection/création rapide sans écriture » | Lire le jeu **pour alimenter ces listes**, sans écrire dans le jeu. |

Ensuite, tes priorités, dans ton ordre :
1. ne jamais mettre le jeu en péril ;
2. « enlever le maximum de freins … à mettre une narrative élaborée sur papier »,
   « avec la meilleure compréhension du terrain » ;
3. créer de vrais éléments, en bonus.

Quand l'outil ne permettait pas d'écrire, tu as rappelé le but premier :
« faire des jets d'idées » et « organiser le déroulement de l'histoire ». Et pour
Bob, l'ordre devait suivre « le déroulé officiel ».

**Lecture v3.** C'est d'abord un outil d'**écriture**. Le jeu lui sert de
**bibliothèque** (listes, textes, conditions réelles) et de **banc d'essai**
(est-ce que ça marche dans cet ordre ?). Lire une quête existante sert à la
retrouver dans le même format que tes idées, pas à la redessiner à chaque
ouverture.

---

## 3. Ce qui a été construit

**v1, l'atelier narratif** (Claude, 29/09) : 11 commits en quatre heures, et sept
structures successives :
1. un graphe à plusieurs types de nœuds ;
2. une sorte de carte unique, le « moment » ;
3. une frise par étapes de quête ;
4. les événements séparés des ouvertures ;
5. des cartes lisibles, aux conditions héritées masquées ;
6. l'élagage des flèches ;
7. le fil des salles et la salle fermée.

L'écriture (intrigues, idées, liens) est venue ensuite, par-dessus. Le cœur est
un calcul d'ordre de **450 lignes de règles** (`buildStory`), pour une seule
quête.

**v2, Fil rouge** (Codex, 30/09). Tu lui avais dit que l'atelier « semble référer
les événements du jeu de manière non intuitive ». Il a répondu par des
« moments » rangés en colonnes par lieu (Donjon, Restaurant, Conversations), en
renonçant à l'ordre : « les colonnes situent les moments ; elles n'imposent pas
un ordre ». C'est plus soigné à l'œil. Mais il n'y a plus de chronologie, et les
cartes disent encore « Bob calmé ← faux · Bob fâché ← faux » ou « étape du
journal ← 1 ».

---

## 4. Les sources probables de ton insatisfaction

### 4.1 Le sens inversé : deviner au lieu d'écrire

C'est la cause principale.

Dans Taskmaster, tu écris les segments et l'outil trace les flèches. Dans les
v1 et v2, **l'outil fabrique les cartes** à partir des fiches du jeu, puis il
devine leur ordre.

Toutes tes remarques sur l'ordre viennent de là :
- « Bob donne le lance-œuf ne devrait pas dépendre de Bob repu » ;
- « Bob est servi avant la Chevauchée débloquée, ce qui est impossible » ;
- « salle nettoyée ne peut pas être au même niveau que Bob se fâche » ;
- « Bob repu devrait être le parent ou l'enfant direct de Bob donne le
  lance-œuf, dépendamment du déroulé officiel ».

Tu connais le déroulé officiel. L'outil essayait de le reconstituer, et il se
trompait. Tu l'as écrit toi-même : « je sais pas si c'est comment tu lis les
données ou moi qui comprends pas la logique ».

### 4.2 Un ordre deviné ne converge jamais

Les conditions disent **quand une chose devient possible**. Elles ne disent pas
**dans quel ordre l'auteur la raconte**. Trois exemples tirés de Bob :
- une réplique facultative (« 25 et 25 ») ressemble, pour l'outil, à une étape ;
- une remise à zéro technique (« Bob calmé ← faux ») ressemble à un événement ;
- « Bob, repu » est possible à deux endroits.

Chaque correction réglait un cas et en déplaçait un autre : conditions
héritées, élagage, fil des salles, salle fermée, ordre automatique. D'où ton
« il y a encore des inconsistances ». Même moi, je ne savais plus prédire le
graphe : je t'ai affirmé à tort que « Bob est servi » ne pouvait pas mener à
« Bob, repu ».

### 4.3 La langue du moteur sur les cartes

Les cartes affichaient des formules comme :
- « Le cheval affamé · état = 0 (Inconnue) » ;
- « étape du journal ≥ 1 » ;
- « Bob fâché ← faux » ;
- « réplique 3 de Bob » ;
- « Ouvre / Ferme », « Rendu possible par / Empêché par ».

C'est exact, mais c'est le vocabulaire du gestionnaire. Ce n'est pas celui d'un
auteur qui pense « El Tuna est invincible, il faut une arme à distance ». Codex
avait vu juste sur le symptôme (« non intuitif »), mais il a gardé ce
vocabulaire.

### 4.4 L'écriture est arrivée en second

L'écriture a été greffée sur un tableau conçu pour lire. Une idée demandait un
formulaire de cinq champs à listes, et rien ne permettait de jeter une idée en
une ligne. Résultat : aucune idée écrite, dans aucune des deux versions.

### 4.5 Une structure qui changeait tous les jours

Sept modèles en une journée. Les clés de rangement ont changé quatre fois, et tes
cartes déplacées ont été perdues à chaque fois. Tu l'as dit : « je comprends
toujours pas ta nouvelle structure », « je suis fatigué, réexplique-moi comme si
j'étais épais ».

### 4.6 Le canevas libre invitait à ranger plutôt qu'à écrire

Les positions libres ont servi à rattraper une mise en page automatique
incompréhensible : 47 cartes déplacées dans une seule vue de la v1. Ranger à la
main ne corrigeait rien sur le fond, et la carte restait reliée au mauvais
parent.

### 4.7 Comprendre la mécanique restait à ta charge

Tu as écrit : « J'essaie de comprendre le fonctionnement des quêtes et le rôle du
déclencheur ». Les outils montraient les conditions, mais n'expliquaient pas ce
que le jeu en fait. La confusion du champ « Style de » en était un symptôme.
C'est aussi ta question de départ, restée sans réponse : « où vivent les
conditions, sur la salle ou le PNJ ? ».

### 4.8 Le thème clair

C'est réglé : la v1 est sombre, et Fil rouge l'est devenu. La v3 l'est d'emblée.

### Ce que l'agent précédent (moi) a mal compris

- J'ai mis la **lecture connectée** au cœur de l'outil, en jugeant qu'un arbre
  non connecté « vieillirait mal ». Puis j'ai amélioré la lecture au lieu de
  l'écriture.
- J'ai traité chacune de tes remarques comme **une règle de plus** pour le
  calcul. C'était plutôt le signe que ce calcul n'était pas le bon travail.
- J'ai changé de modèle à chaque retour au lieu d'en stabiliser un.

---

## 5. La v3 : « Déroulé »

### 5.1 L'idée en une phrase

> Ton histoire est une suite de moments que **tu** ordonnes. Le jeu vient s'y
> accrocher, et l'outil vérifie qu'il peut vraiment la jouer dans cet ordre.

### 5.2 Six règles

1. **Un seul objet, le moment** : ce que vit le joueur à un instant de
   l'histoire. Une scène, une conversation, un combat, un service ou une
   récompense.
2. **L'ordre est le tien.** Il se déclare en glissant les cartes, il est
   enregistré, et rien ne le recalcule. Les données du jeu ne déplacent jamais
   un moment.
3. **Le jeu remplit, tu arranges.**
   - Une fiche du jeu liée à une quête mais que ton déroulé n'utilise pas
     arrive dans le bac **« À placer »**. Tu la glisses où elle va, ou sur un
     moment existant pour l'y rattacher.
   - Une fiche reliée qui disparaît du jeu est signalée.
   - Les détails (textes, conditions, récompenses) sont lus en direct, jamais
     copiés.
4. **Vérifier au lieu de deviner.** L'outil parcourt *ton* ordre avec les
   règles du jeu. Il signale ce qui ne peut pas arriver là où tu l'as mis, et il
   dit pourquoi.
5. **La langue du joueur sur la carte, la mécanique dans le panneau.**
   - La carte dit « Quand Bob s'assoit au restaurant », « La quête commence »,
     « Le joueur reçoit le Lance-œuf ».
   - Le reste va dans « Comment le jeu le fait ».
6. **Écrire d'abord.** Un jet d'idée, c'est une ligne et Entrée. Choisir de
   vrais éléments enrichit l'idée, mais n'est jamais un passage obligé.

### 5.3 L'écran

```
┌───────────────────┬────────────────────────────────────────────┬──────────────────┐
│ DÉROULÉ           │ Jet d'idée : [ Bob a un frère jumeau… ⏎ ]  │ Bob entre au     │
│                   │                                            │ restaurant       │
│ Du jeu            │ ── 1 · Un poisson invincible ───────────── │                  │
│ ● Le cheval       │ ┌───────────────────────────────────────┐  │ Comment le jeu   │
│   affamé          │ │ El Tuna, première rencontre           │  │ le fait          │
│                   │ │ Serre abandonnée · 1re dimension      │  │ · client         │
│ Mes intrigues     │ │ « Ta fourchette ne lui fera rien… »   │  │   exclusif…      │
│ ○ …               │ │ → La quête commence                   │  │ · ne vient       │
│ + Intrigue        │ └───────────────────┬───────────────────┘  │   qu'une fois…   │
│                   │ ── 2 · La Chevauchée Poil-et-Plume ──────  │                  │
│ À placer (0)      │ ┌───────────────────▼───────────────────┐  │ Fiches           │
│ Idées en vrac (2) │ │ Bob entre au restaurant            💬 │  │ client ↗         │
│                   │ └───────────────────┬───────────────────┘  │ déclencheur ↗    │
│                   │         ┌───────────┴─────────┐ ⑂ Nourrir  │ scène ↗          │
│                   │   Au restaurant          À emporter        │                  │
│                   │ ┌──────────────┐      ┌────────────────┐   │                  │
│                   │ │ Servir Bob   │      │ Mettre de côté │   │                  │
│                   │ └──────┬───────┘      └───────┬────────┘   │                  │
│                   │        │              ┌───────▼────────┐   │                  │
│                   │        │              │ La planque     │   │                  │
│                   │        │              └──┬──────────┬──┘   │                  │
│                   │        │           avec le plat   vides ↻  │                  │
│                   │        └───────────┬──────┘                │                  │
│                   │ ── Quête réussie ───────────────────────── │                  │
│                   │ ┌───────────────────▼───────────────────┐  │                  │
│                   │ │ Bob donne le Lance-œufs            💬 │  │                  │
│                   │ └───────────────────────────────────────┘  │                  │
└───────────────────┴────────────────────────────────────────────┴──────────────────┘
```

- **À gauche** : tes intrigues (celles du jeu, puis les tiennes), le bac « À
  placer » et les « Idées en vrac ».
- **Au centre** : le déroulé, de haut en bas, comme un scénario.
  - Les chapitres sont des intertitres : les étapes du journal pour une quête
    du jeu, les tiens pour une intrigue à toi.
  - Une fourche « ou bien » ouvre des colonnes côte à côte, qui se rejoignent
    ensuite.
  - ↻ marque ce qui se répète ou revient en arrière.
  - 💬 marque une conversation facultative, accrochée au moment (« si on lui
    parle ici… »).
- **À droite** : le panneau du moment choisi.
- **Glisser une carte la déplace dans le déroulé** : entre deux moments, dans
  une branche ou dans un chapitre. On ne déplace plus des pixels. La mise en
  page découle de l'ordre, donc aucune flèche ne se croise et rien n'est « au
  même niveau » par hasard.

### 5.4 Une carte

- **Titre** dans tes mots. Au départ, c'est le nom de la fiche du jeu.
- **Où · Qui** : le lieu (restaurant, salle, partout) et les personnages.
- **Quand** : une phrase de situation, comme « Quand Bob s'assoit au
  restaurant ».
  - On n'y met que ce qui est propre au moment.
  - Ce qui découle de l'ordre, comme « la quête est en cours », n'est pas
    répété.
- **Ce que vit le joueur** : les premières lignes de la scène, ou ton résumé.
- **Ce que ça change**, en phrases : « La quête commence », « Le journal passe
  à : La Chevauchée Poil-et-Plume », « La Chevauchée se débloque », « Bob ne
  reviendra plus au restaurant ».
- **Le joueur gagne** : arme, recette, employé, objet ou pièces, dans un encadré
  doré.
- **Pastilles** : *idée* (pointillés), *dans le jeu*, ↻ *se répète*,
  💬 *conversation*, ⚠ *à vérifier*.

### 5.5 « Comment le jeu le fait »

Ce panneau dit en mots simples quelles fiches réalisent le moment, et ce que le
jeu en fait. C'est la réponse directe à « où vivent les conditions ». Exemple
pour « Bob entre au restaurant » :

> Bob est un **client exclusif**. Il ne se présente que si « Le cheval affamé »
> est en cours, à l'étape « Un poisson invincible ». La salle se vide pour lui,
> puis il entre seul. Tant qu'il est attablé, on ne peut pas partir en plongée.
>
> Dès qu'il est assis, le **déclencheur** « Bob entre au restaurant » (une seule
> fois) joue sa scène. Le journal passe alors à l'étape « La Chevauchée
> Poil-et-Plume ».
>
> À savoir : **Bob ne vient qu'une fois**, puisque sa venue exige l'étape
> d'avant. Pour le servir au restaurant, il faut avoir les ingrédients pendant
> cette visite : patience de 45 s, cuisson de 20 s. Sinon, il reste la planque.
>
> Fiches : client ↗ · déclencheur ↗ · scène ↗ (elles s'ouvrent dans le
> gestionnaire).

### 5.6 Écrire

- **Jet d'idée** : tu tapes une ligne et Entrée. La carte part dans les « Idées
  en vrac » de l'intrigue ouverte, et tu la glisses dans le déroulé quand tu
  veux.
- **Construire le déroulé** :
  - **+ moment** après n'importe quelle carte ;
  - **+ ou bien** pour ouvrir une fourche ;
  - **↻** pour marquer une boucle.
- **Les champs** : Où, Qui, Quand, Ce que vit le joueur, Ce que ça change, Le
  joueur gagne. Chacun accepte du texte libre ou un vrai élément, pris dans les
  listes du jeu :
  - lieux et personnes : salles, personnages, clients, ennemis ;
  - butin : armes, recettes, employés, objets, ingrédients ;
  - progression : améliorations, faits, quêtes.

  Un nom inconnu devient « **à créer** ».
- **Relier au jeu** : une fois la fiche créée dans le gestionnaire, tu la relies
  au moment. Il passe « dans le jeu » et se vérifie.
- **Fiche d'intrigue** : la prémisse, plus tout ce qui se calcule seul :
  - les personnages, lieux et récompenses ;
  - les éléments à créer ;
  - ce qui reste à placer ;
  - les alertes.

### 5.7 Vérifier : la compréhension du terrain

L'outil rejoue *ton* déroulé avec les règles du jeu : état de la quête, faits,
objets, armes, ennemis vaincus. Il le fait branche par branche, et une boucle ne
rejoint pas la suite.

- **Ordre impossible.** Si tu glisses « Servir Bob » avant « Bob entre au
  restaurant », la carte affiche : ⚠ « La Chevauchée n'est pas encore débloquée
  ici : elle se débloque à « Bob entre au restaurant ». »
- **Rendu possible par.** Ce lien est calculé le long de ton ordre. Il ne remonte
  donc jamais le temps et ne fait jamais doublon.
- **Ce qui manque** : une fiche de la quête que tu n'as pas placée, ou une fiche
  reliée qui a disparu du jeu.
- **Ce qu'il faut savoir** (livraison 2) : le même acteur ailleurs dans le jeu,
  et les textes qui contredisent les données. Exemples réels au §6.

---

## 6. Le cheval affamé, en déroulé v3

Voici le déroulé que je lis dans le jeu publié aujourd'hui, et que la v3
afficherait pour Bob. **S'il te paraît juste, le modèle est le bon. Sinon, c'est
ici qu'il faut me corriger, avant le code.**

### Chapitre 1 · Un poisson invincible

*Étape 1 du journal.*

1. **El Tuna, première rencontre**
   - Où : la Serre abandonnée, 1re dimension.
   - Ce que vit le joueur : « Ta fourchette ne lui fera rien… ou quelqu'un qui
     en a une. »
   - Ce que ça change : la quête commence ; Bob peut venir au restaurant.

### Chapitre 2 · La Chevauchée Poil-et-Plume

*Étape 2 du journal.*

2. **Bob entre au restaurant**
   - Où, qui : au restaurant, Bob seul, une seule fois.
   - Ce que vit le joueur : « Prépare-moi une Chevauchée Poil-et-Plume… »
   - Ce que ça change :
     - le journal passe à l'étape 2 ;
     - la Chevauchée se débloque ;
     - la planque de Bob peut apparaître ;
     - Bob ne reviendra plus au restaurant.
   - 💬 Si on lui parle pendant qu'il attend : « 25 et 25. Je ne bouge pas
     d'ici. »

⑂ **Nourrir Bob**, ou bien :

- **Au restaurant**
  - 3\. **Servir Bob le cheval** → la quête est réussie.
- **À emporter**
  - 3\. **Mettre le plat de côté**, à la console → le joueur porte la
    « Chevauchée (à emporter) ».
  - 4\. **La planque de Bob**, dans la Vallée du Cratère. Elle remplace la
    salle 3 de la 1re dimension, une fois sur deux. Bob accueille le joueur et
    réagit à ce qu'il porte. ⑂ Ou bien :
    - **Avec le plat**
      - 5\. **Bob reçoit son plat** → la quête est réussie.
    - **Les mains vides** ↻
      - 5\. **Bob se fâche** → Bob disparaît et revient en combattant.
      - 6\. **Bob s'excuse**, après le combat → il attend toujours son plat ;
        il faut revenir avec.

### Quête réussie

7. **Bob donne le Lance-œufs**, où que l'on soit → le joueur reçoit le
   Lance-œuf, qui l'attend à l'arsenal.
   - 💬 Si on lui parle encore : « On se reverra, petit chef. Garde-moi une
     assiette. »

### Après la quête

8. **Vaincre El Tuna** : une action du joueur. Le Lance-œuf aide, puisque la
   fourchette ne fait que 5 % des dégâts.
9. **Le défi de Bob** ↻ : remplace la salle 4 de la 1re dimension, une fois sur
   quatre. Un combat.
10. **Bob rejoint la brigade**, après le combat → Bob peut être embauché,
    gratuitement.
11. **La pause de Bob** ↻ : la même case, une fois sur quatre. Un combat.
12. **Fin de la pause** ↻, après le combat → Bob repart au restaurant.

### Ce que le vérificateur relèverait déjà

Dans le jeu publié aujourd'hui :
- **25 contre 5.** Les textes disent « 25 et 25 » : la scène d'arrivée,
  « Bob attend son plat », « Bob s'excuse », la bulle et l'étape 2 du journal.
  Mais la recette demande 5 viandes de chaque.
- **Lance-œuf ou Lance-œufs.** L'arme s'appelle « Lance-œuf », mais les scènes
  et les titres disent « Lance-œufs ».
- **Bob ailleurs.** Bob apparaît comme ennemi dans « Ancienne route de
  service » (dimensions 2 à 4), sans condition de quête. Un joueur peut l'y
  croiser sans le connaître, ou après l'avoir embauché.
- **El Tuna ailleurs.** Il garde la Serre abandonnée des dimensions 1 à 4, mais
  la quête ne démarre que dans celle de la 1re.
- **Le nom affiché « eLTuna ».**

C'est le genre d'information qui aide à écrire, et aucun des deux outils ne la
donnait.

---

## 7. Ce qu'on garde, ce qu'on laisse

| Venu de | On garde | On laisse |
|---|---|---|
| v1 | La lecture du jeu publié, le carnet sûr (empreinte, refus 409, écriture atomique), les liens vers le gestionnaire, les gestes tactiles, le thème sombre, l'index des adresses du jeu | Le calcul d'ordre (phases, couches, élagage, héritage, fil des salles), les positions libres, les sections « Ouvre / Ferme » |
| v2 | La bibliothèque d'intrigues à gauche, les grandes cartes lisibles, les références qui gardent l'identifiant et affichent le nom actuel, la copie de secours en cas de conflit | Les colonnes par lieu sans ordre, le vocabulaire du moteur sur les cartes, les « dépendances de données » |

---

## 8. Garanties (inchangées)

- Le jeu se lit par `GET ../api.php?action=load_master`, et par rien d'autre.
- Un seul fichier est écrit : `data/deroule_plan.json`.
  - Son chemin est fixe : aucune requête ne peut en désigner un autre.
  - Une empreinte SHA-256 protège chaque écriture. Si le carnet a changé
    ailleurs, l'écriture est refusée (409) au lieu d'écraser.
  - Le fichier est écrit sous un nom temporaire puis renommé, et la version
    précédente est gardée en `.previous`.
- Le maître, le brouillon et les sauvegardes ne sont jamais touchés, et l'outil
  ne publie jamais.
- Un test de sécurité le vérifie dans le code source, comme pour la v1.

---

## 9. Retrait de Fil rouge

- **Ce qui part** :
  - le dossier `fil-rouge/` et ses trois tests ;
  - `docs/fil-rouge.md` ;
  - ses lignes du `.gitignore` ;
  - sa section de `docs/current-task.md`.
- **Le bouton du gestionnaire** devient « Déroulé ↗ ».
- **Rien de toi n'est perdu** : son carnet (`fil_rouge_plan.json`) ne contient
  que 8 positions de cartes. Git garde tout l'historique de Fil rouge, si l'on
  veut y revenir.

---

## 10. Étapes

### Livraison 1 — remplacer Fil rouge et écrire pour de vrai

- **Le gestionnaire** : Fil rouge retiré, bouton « Déroulé ↗ ».
- **Lire** :
  - le déroulé de Bob du §6 ;
  - les cartes dans la langue du joueur ;
  - le panneau « Comment le jeu le fait » ;
  - les liens vers les fiches du gestionnaire.
- **Écrire** :
  - une intrigue neuve, un jet d'idée, un moment ;
  - une fourche « ou bien », une boucle ;
  - glisser pour ordonner ;
  - des champs à listes réelles, avec « à créer » ;
  - relier une fiche du jeu ;
  - annuler et rétablir.
- **Vérifier** : l'ordre, le bac « À placer », les fiches disparues du jeu.
- **Le socle** : carnet sûr, thème sombre, tactile.
- **Les tests** :
  - le modèle (déroulé de Bob, opérations, vérificateur) ;
  - le carnet côté PHP ;
  - la sécurité ;
  - un parcours complet dans le navigateur.

### Livraison 2 — mieux comprendre le terrain

- Les alertes « ce qu'il faut savoir » : un acteur présent ailleurs, un texte qui
  contredit les données.
- Une proposition d'emplacement pour une fiche nouvelle.
- L'export Markdown d'une intrigue.

### Livraison 3 — le bonus

- Créer une fiche (déclencheur, scène) dans le brouillon du gestionnaire à
  partir d'un moment. La création passe toujours par ta publication.

---

## 11. Décisions de l'auteur (01/10/2026)

Elles priment sur ce que les sections 5, 9 et 10 proposaient.

1. **Fil rouge** : seul son bouton quitte le gestionnaire. Le dossier
   `fil-rouge/`, ses tests et sa documentation restent, accessibles par leur
   adresse. Le §9 ne s'applique donc qu'au bouton.
2. **La v1** est gardée à son adresse (`narrative/`) jusqu'à ce que la v3
   convienne.
3. **Premières flèches de Bob : l'outil les devine**, une seule fois. C'est
   le rangement proposé au premier lancement. Il devient celui de l'auteur au
   premier geste, et n'est plus recalculé.
4. **Canevas libre** plutôt qu'un scénario vertical. Les cartes se posent où
   l'on veut, et l'ordre de l'histoire, ce sont les flèches tracées. Les
   chapitres deviennent une étiquette sur la carte. « Ranger » propose une
   disposition qui suit les flèches, seulement quand on clique.
5. **Les flèches calculées depuis le jeu sont toujours visibles**, en
   pointillés, sauf là où une flèche de l'auteur dit déjà la même chose.

## 12. Livraison 1 — ce qui est fait

Dossier `tools/game-data-manager/deroule/`, bouton **Déroulé ↗** du
gestionnaire.

- **Lecture** (`deroule_game.js`) : la quête est lue en moments.
  - Une salle et le déclencheur qui part à l'entrée ne font qu'un moment.
  - Une vague conditionnelle appartient au moment qui la provoque, avec le PNJ
    qui part.
  - « Salle nettoyée » et le déclencheur qu'elle fait partir ne font qu'un.
  - Une réplique sans effet devient une conversation 💬 accrochée au moment où
    l'on peut la dire.
  - Pour Bob : 14 moments et 15 flèches, celles du §6.
- **Les flèches proposées** viennent de l'index de la v1, regroupé en moments.
  Sont écartées celles qui se contredisent (la fin de la pause ne mène pas à
  « Bob rejoint la brigade ») et celles que d'autres flèches disent déjà.
- **Les cartes** parlent la langue du joueur : comment ça part, quand, ce que
  vit le joueur, ce que ça change, ce que le joueur gagne. Le panneau « Comment
  le jeu le fait » explique la mécanique en phrases, par exemple que Bob ne
  vient qu'une fois.
- **La vérification** rejoue l'ordre de l'auteur et signale ⚠ ce qui ne peut
  pas arriver là où c'est placé, en nommant le moment qui manque. « Rendu
  possible par » se calcule le long de cet ordre.
- **L'écriture** :
  - un jet d'idée, d'une ligne ;
  - une idée posée d'un double-clic ;
  - une intrigue à soi ;
  - des champs à vrais noms ou à créer ;
  - relier une idée à des fiches du jeu ;
  - titre et note de l'auteur sur un moment du jeu ;
  - flèches avec libellé et boucle ↻ ;
  - annuler et rétablir ;
  - une copie de secours en cas de conflit d'enregistrement.
- **Tests** :
  - `deroule_game`, `deroule_plan`, `deroule_store`, `deroule_safety` ;
  - `deroule_browser` (parcours complet) et `deroule_touch` (doigts).

  Tous ont été vus échouer une fois avec une régression réintroduite. La quête
  d'essai `tests/fixtures/deroule_quest.js` reprend la mécanique de Bob avec
  ses propres noms.

Restent pour la livraison 2 : les alertes « ce qu'il faut savoir », la
proposition d'emplacement d'une fiche nouvelle, et l'export Markdown.

## 13. Plan unique et conditions de l'auteur (03/10/2026)

Demande : « toutes les intrigues seraient sur un même plan, avec possibilité
d'afficher ou non des intrigues », et « mettre mes conditions moi-même ».
Choix de l'auteur : une couleur par intrigue ; conditions dans le vocabulaire
du jeu plus du texte libre ; seulement sur ses cartes (les moments du jeu
restent lus en direct).

- **Carnet** : même format (version 1), deux ajouts. `colors` donne la
  couleur d'une histoire ; une intrigue d'avant les couleurs en reçoit une
  libre au chargement, une quête sans choix en tire une de son nom. Une idée
  porte `conditions` : `{path, operator, value}` au format du jeu, ou
  `{text}`. L'ancien champ « Quand » devient une condition libre.
- **Places** : chaque `placed` est une coordonnée du plan commun ; le
  rangement de Bob n'a pas bougé. Une quête pas encore touchée se range à
  gauche de ce que l'auteur a posé ; une intrigue sans carte s'ouvre sur une
  place libre à droite de tout.
- **Flèches** : rangées dans l'histoire de leur carte de départ, elles peuvent
  viser une autre histoire. Retirer une carte ou supprimer une intrigue
  efface aussi les flèches rangées ailleurs.
- **Vérification** : elle porte sur tout le plan, histoires masquées
  comprises ; les idées y entrent avec leurs conditions.
- **Masquer** est un réglage de vue, gardé dans le navigateur, hors du carnet
  et de l'historique.
