diff --git a/LICENSE-CONTENT.md b/LICENSE-CONTENT.md new file mode 100644 index 0000000..ffadf72 --- /dev/null +++ b/LICENSE-CONTENT.md @@ -0,0 +1,84 @@ +# Licence du contenu — CC BY‑NC 4.0 + +Ce dépôt utilise une **double licence** : + +- **Code (logiciels)** : licence **MIT** — voir `LICENSE` +- **Contenu créatif** : licence **Creative Commons Attribution – NonCommercial 4.0 International (CC BY‑NC 4.0)** — le présent fichier + +> En cas de conflit, **la mention de licence la plus spécifique** (au niveau d’un fichier/dossier) prévaut. + +--- + +## 1) Périmètre : ce que couvre la licence “contenu” + +Sauf mention contraire, la licence **CC BY‑NC 4.0** s’applique à tout ce qui relève du **contenu créatif** du jeu, notamment : + +- scénarios et narration (textes, descriptions d’énigmes, dialogues), +- documents MJ, guides, textes et ressources de jeu (`docs/`), +- printables (PDF/PNG), cartes, indices, maquettes (`printables/`), +- manifestes audio et contenus associés (`audio/`), +- images, médias et éléments de communication (`assets/`). + +--- + +## 2) Ce que cette licence ne couvre PAS + +La licence **MIT** (voir `LICENSE`) s’applique au **code**, notamment : + +- scripts/outils (`tools/`), +- firmware et code embarqué (`hardware/firmware/`), +- fichiers de build/config, CI, etc. + +--- + +## 3) Résumé (non contractuel) de CC BY‑NC 4.0 + +Vous pouvez, **uniquement à des fins non commerciales** : + +- **Partager** : copier et redistribuer le contenu, +- **Adapter** : remixer, transformer et créer à partir du contenu, + +À condition de : + +- **Attribuer** : créditer l’auteur, citer la source, indiquer la licence, +- **Indiquer les modifications** si vous en faites, +- **Ne pas faire d’usage commercial**, +- **Ne pas imposer de restrictions supplémentaires** (DRM, clauses additionnelles, etc.). + +--- + +## 4) “NonCommercial” : interprétation pratique + +“NonCommercial” signifie : **pas d’utilisation principalement destinée à un avantage commercial ou à une compensation monétaire**. + +Exemples **interdits sans accord** : +- vendre un pack / kit “Zacus”, +- monétiser l’accès au contenu (paywall, abonnement, bundle), +- intégrer le contenu dans une prestation commerciale avec marge. + +Exemples généralement **autorisés** : +- jouer en famille / association, +- organiser une partie à prix coûtant (impressions, matériel) sans marge, +- publier des adaptations gratuitement (avec attribution). + +--- + +## 5) Attribution recommandée + +> “Le Mystère du Professeur Zacus” — © electron-rare. +> Contenu sous licence **CC BY‑NC 4.0**. +> Source : dépôt GitHub du projet. + +--- + +## 6) Contenus tiers + +Certains fichiers peuvent provenir de tiers (polices, icônes, sons, images, librairies). +Dans ce cas, **leurs licences s’appliquent** et sont indiquées dans les fichiers ou dossiers concernés. + +--- + +## 7) Texte légal + +Texte complet (référence officielle) : +https://creativecommons.org/licenses/by-nc/4.0/ diff --git a/README.md b/README.md index a059310..adce058 100644 --- a/README.md +++ b/README.md @@ -1,70 +1,154 @@ -# Le Mystère du Professeur Zacus — kit d’enquête (printables + guide MJ + audio) -Kit d’enquête pour anniversaire (6–14 enfants, 60–90 minutes), ambiance laboratoire / campus scientifique. +# 🤖🎩 Le Mystère du Professeur Zacus 🎩🤖 -## Aperçu visuel -![Vue d'ensemble du dépôt](docs/assets/repo-map.svg) +![Couverture](./assets/cover.png) -## Contenu -### 1) Kit Maître du jeu -Dossier : `kit-maitre-du-jeu/` -- script minute-par-minute (déroulé prêt à jouer) -- solution complète (coupable, mobile, méthode, chronologie) -- checklist matériel + mise en place 4 stations -- distribution des rôles (modulable 6–14 enfants) -- guide anti-chaos + plan stations -- générer un scénario + validation +> **Bienvenue dans l’enquête la plus instable du multivers** : indices imprimables, audio, modules électroniques (option), et un guide MJ qui ne bug jamais (sauf si tu l’imprimes en 3D). +> **⚛ L’électron rare — ⚡ unstable by design** +> **Auteur : Clément SAILLANT** -### 2) Printables (imprimables) -Dossier : `printables/` -- structure `src/` + `export/{pdf,png}/` -- prompts graphiques dans `src/prompts/` + `WORKFLOW.md` -- ordres d’impression standardisés -- badges détective, fiches d’enquête, cartes personnages, zones +[![Build](https://img.shields.io/badge/build-validate%20%2B%20export-brightgreen)](./.github/workflows/validate.yml) +[![PlatformIO](https://img.shields.io/badge/PlatformIO-ready-brightgreen)](https://platformio.org/) +[![Code: MIT](https://img.shields.io/badge/code-MIT-blue)](./LICENSE) +[![Content: CC%20BY--NC%204.0](https://img.shields.io/badge/content-CC%20BY--NC%204.0-orange)](./LICENSE-CONTENT.md) -### 3) Game & audio -- `game/scenarios/zacus_v1.yaml` (canon, solution unique, timeline + preuves) -- `audio/manifests/zacus_v1_audio.yaml` + `game/prompts/audio/` (intro, incident, accusation, solution) -- scénario validé par `tools/scenario/validate_scenario.py` -- manifestes audio validés par `tools/audio/validate_manifest.py` -### 4) Outils & documentation -- `docs/QUICKSTART.md` (mise en place express, licences) -- `docs/STYLEGUIDE.md` (ton, structure, prompts) -- `docs/index.md` + `docs/repo-status.md` pour la navigation et l’état du dépôt -- `include-humain-IA/` (contenus annexes, renommé pour la portabilité) -- `tools/dev/zacus.sh codex --prompt tools/dev/codex_prompts/zacus_overhaul_one_shot.md` lance le prompt de Codex directement depuis le dépôt. -- `tools/dev/zacus.sh zeroclaw-preflight --require-port` lance le préflight USB ZeroClaw avant actions hardware. -- Les artifacts de résolution de ports sont écrits sous `artifacts/ports//ports_resolve.json` avec un pointeur `artifacts/ports/latest_ports_resolve.json`. Utilisez `ZACUS_MOCK_PORTS=1` (et `ZACUS_PORTS_FIXTURE=tools/test/fixtures/ports_list_macos.txt`) pour tester la boucle sans matériel. -- `tools/dev/zacus.sh codex --prompt tools/dev/codex_prompts/zacus_overhaul_one_shot.md` lance le prompt de Codex directement depuis le dépôt. +## ⚡ Pitch (30 secondes chrono) -## État du projet -- **Kit MJ** : complet (script, plan, antic-chaos, solution, checklists, export PDF). -- **Printables** : prompts prêts, workflow documenté (`printables/WORKFLOW.md`), exports par thème organisés. -- **Game/audio** : scénario canon `zacus_v1`, manifestes, audio narratif et scripts de validation. -- **Outils** : scripts Python ded validation scenario/audio + guide rapide. +Le Professeur Zacus a disparu. Son labo est sous tension : **signaux audio**, **capsules d’indices**, **preuves imprimées**… et un dispositif électronique optionnel qui réagit (parfois) à tes découvertes. -## Licence / Contribution -- Contenus créatifs (documents, PDFs, PNG, SVG, assets, prompts) : **CC BY-NC 4.0** (`LICENSES/CC-BY-NC-4.0.txt`). -- Code et scripts (firmware, outils, validation) : **MIT** (`LICENSES/MIT.txt`). -- Voir `CONTRIBUTING.md` pour les règles d’ajout et d’examen des contributions. +Les joueurs fouillent, recoupent, déduisent — comme une vraie équipe d’enquête, mais avec plus de blagues et moins de panique. +Le MJ déroule une session fluide, avec des checkpoints et une fin satisfaisante (sauf si tu oublies le gâteau). -## Disclaimer -Projet indépendant, non affilié à aucune marque ou éditeur. Voir `DISCLAIMER.md`. +> *"Si tu trouves une LED qui clignote, c’est normal. Si elle te parle, c’est probablement un bug... ou le MJ qui s’ennuie."* +--- -## Maintenance du dépôt (hors firmware) -- Plan : `docs/maintenance-repo.md` -- Audit : `docs/repo-audit.md` -- Repo status : `docs/repo-status.md` +## ✅ Ce que tu obtiens (concret, pas du vent) -## Contribuer -Voir `CONTRIBUTING.md`. +- **Printables** prêts à imprimer (indices, cartes, accessoires) +- **Guide Maître du Jeu** (mise en place, script, solutions) +- **Audio** (timers / ambiance / déclenchements) +- **Scénario YAML** = source de vérité (durée/difficulté modulables) +- **Option électronique** : ESP32/Arduino (UI, effets, interactions) -## Historique -Voir `CHANGELOG.md`. +> Tout est pensé pour être **rejouable** et **facile à préparer**. Même pour les MJ qui n’ont jamais touché un oscilloscope. +> *"MJ : Maître du Jeu, mais aussi Maître du Jazz, Maître du Jenga, Maître du Juste Prix... à toi de choisir."* -## Mainteneur -L’électron rare +--- -## Exemples transverses -- Index exemples: `examples/README.md` +## 🕹️ Pour qui / durée / niveau de fun + +- **Joueurs** : 6–14 (recommandé), ou équipes de 2–4 +- **Durée** : 60–90 min (modulable, sauf si tu actives le mode “slow motion”) +- **Âge** : famille / anniversaire (adaptable, sauf pour les robots) +- **Matériel** : imprimante + (option) modules électroniques (simple si tu achète un kit tout prête genre freenove ou autres esp32 avec un écran) + +> *"Le mode ‘slow motion’ est réservé aux anniversaires avec trop de bonbons."* + +--- + +## 🎬 Démo + +![Démo](./assets/demo.gif) + +> *"Si tu croises un QR code dans les archives, scanne-le. Si tu croises un QR code sur ton gâteau, scanne-le aussi (on ne sait jamais)."* +--- + +## 🧠 Comment ça marche (en 1 minute, ou 42 secondes si tu es pressé) + +### Source de vérité : le scénario YAML +Le scénario principal est dans `game/scenarios/`. Il pilote : +- les étapes / stations, +- les validations / codes, +- les exports (briefs MJ, docs, manifestes). + +### Pipeline du repo +`game/scenarios/*.yaml → tools/ (validate + export) → kit MJ / printables / audio → (option) hardware/firmware/esp32` + +![Diagramme](./assets/diagram.png) + +--- + +## 🧩 Démarrage rapide (MJ, version turbo) + +> *"Si tu veux une expérience vraiment futuriste, branche un ESP32 sur ton chat. (Non, ne fais pas ça, mais l’idée est marrante.)"* + +1. Lis le **guide MJ** : `kit-maitre-du-jeu/` +2. Imprime les **printables** : `printables/` +3. Prépare l’audio : `audio/` +4. (Option) Achete, cable et Flash l’électronique : `hardware/` (un kit esp32-S3 avec écran est parfait... ou un vieux grille-pain, mais c’est moins efficace) +5. Lance la partie 🎩 + +👉 FAQ / dépannage : `docs/faq.md` (aucune question idiote, sauf “où est le MJ ?”) + +--- + +## 🛠️ Démarrage rapide (dev, version quantum) + +> *"Astuce dev : Si tu valides le YAML sans erreur du premier coup, tu gagnes un badge ‘Zacus Quantum’ (à imprimer toi-même)."* + +Installer les validateurs : +```bash +bash tools/setup/install_validators.sh +``` + +Valider le scénario officiel : +```bash +python3 tools/scenario/validate_scenario.py game/scenarios/zacus_v1.yaml +``` + +Exporter un brief Markdown : +```bash +python3 tools/scenario/export_md.py game/scenarios/zacus_v1.yaml -o docs/exports/zacus_v1.md +``` + +--- + +## 🧾 Contenu du dépôt (repères galactiques) + +> *"Ce dépôt est plus organisé que le bureau du Professeur Zacus (et ça, c’est pas peu dire)."* + +```text +game/scenarios/ Scénarios YAML (source de vérité) +kit-maitre-du-jeu/ Guide MJ + solutions + script +printables/ Cartes/indices + manifestes +audio/ Manifestes audio + ressources +tools/ Validation + export + génération +hardware/ Firmware & accessoires électroniques (option) +docs/ Mini-site / FAQ / ressources +``` + +--- + +## 🧷 Visuels + +> *"Si tu reconnais le prototype sur la photo, tu es officiellement un expert en électronique de fête."* + +![Prototype](./assets/board.jpg) + +![Printables](./assets/printables.png) + +--- + +## 🧑‍🎓 Licence + +- **Code** : MIT (`LICENSE`) +- **Contenu créatif** (scénarios, docs, printables, assets) : CC BY‑NC 4.0 (`LICENSE-CONTENT.md`) + + +> *"Ce jeu est garanti sans IA malveillante, mais avec des enfants qui peuvent hacker le scénario à tout moment."* +--- + +## 🤝 Crédits + +> *"Merci à tous les MJ, enfants, parents, et robots qui ont testé ce scénario. Mention spéciale à ceux qui ont trouvé le twist avant la LED rouge."* + +**Auteur : Clément SAILLANT** +Signature : **⚛ L’électron rare** — **⚡ unstable by design** + +> *"Ce projet a été validé par un oscilloscope, un grille-pain, et une IA qui adore les énigmes."* + +--- + +OpenGraph : `assets/og.png` (1200×630) +- generation/story-ia : scénarios IA diff --git a/README_ULTRA_MARKETING.md b/README_ULTRA_MARKETING.md new file mode 100644 index 0000000..33c1835 --- /dev/null +++ b/README_ULTRA_MARKETING.md @@ -0,0 +1,134 @@ +# 🎩 Le Mystère du Professeur Zacus + +![Couverture](./docs/assets/cover.png) + +> **Une enquête scientifique cyber‑labo** pour anniversaire : indices imprimables, audio, modules électroniques (option), et un guide MJ ultra clair. +> **⚛ L’électron rare — ⚡ unstable by design** +> **Auteur : Clément SAILLANT** + +[![Build](https://img.shields.io/badge/build-validate%20%2B%20export-brightgreen)](./.github/workflows/validate.yml) +[![Code: MIT](https://img.shields.io/badge/code-MIT-blue)](./LICENSES/MIT.txt) +[![Content: CC%20BY--NC%204.0](https://img.shields.io/badge/content-CC%20BY--NC%204.0-orange)](./LICENSES/CC-BY-NC-4.0.txt) + +--- + +## ⚡ Pitch (30 secondes) + +Le Professeur Zacus a disparu. Dans son labo, tout est encore “sous tension” : **signaux audio**, **capsules d’indices**, **preuves imprimées**… et un dispositif électronique optionnel qui réagit aux découvertes. + +Les joueurs fouillent, recoupent, déduisent — comme une vraie équipe d’enquête. +Le MJ déroule une session fluide, avec des checkpoints et une fin satisfaisante. + +--- + +## ✅ Ce que tu obtiens (concret) + +- **Printables** prêts à imprimer (indices, cartes, accessoires) +- **Guide Maître du Jeu** (mise en place, script, solutions) +- **Audio** (timers / ambiance / déclenchements) +- **Scénario YAML** = source de vérité (durée/difficulté modulables) +- **Option électronique** : ESP32/Arduino (UI, effets, interactions) + +> Tout est pensé pour être **rejouable** et **facile à préparer**. + +--- + +## 🕹️ Pour qui / durée + +- **Joueurs** : 6–14 (recommandé), ou équipes de 2–4 +- **Durée** : 60–90 min (modulable) +- **Âge** : famille / anniversaire (adaptable) +- **Matériel** : imprimante + (option) modules électroniques + +--- + +## 🎬 Démo + +![Démo](./docs/assets/demo.gif) + +--- + +## 🧠 Comment ça marche (en 1 minute) + +### Source de vérité : le scénario YAML +Le scénario principal est dans `game/scenarios/`. Il pilote : +- les étapes / stations, +- les validations / codes, +- les exports (briefs MJ, docs, manifestes). + +### Pipeline du repo +`game/scenarios/*.yaml → tools/ (validate + export) → kit MJ / printables / audio → (option) hardware/firmware/esp32` + +![Diagramme](./docs/assets/diagram.png) + +--- + +## 🧩 Démarrage rapide (MJ) + +1. Lis le **guide MJ** : `kit-maitre-du-jeu/` +2. Imprime les **printables** : `printables/` +3. Prépare l’audio : `audio/` +4. (Option) Achete, cable et Flash l’électronique : `hardware/` (un kit esp32-S3 avec écran est parfait...) +5. Lance la partie 🎩 + +👉 FAQ / dépannage : `docs/faq.md` + +--- + +## 🛠️ Démarrage rapide (dev) + +Installer les validateurs : +```bash +bash tools/setup/install_validators.sh +``` + +Valider le scénario officiel : +```bash +python3 tools/scenario/validate_scenario.py game/scenarios/zacus_v1.yaml +``` + +Exporter un brief Markdown : +```bash +python3 tools/scenario/export_md.py game/scenarios/zacus_v1.yaml -o docs/exports/zacus_v1.md +``` + +--- + +## 🧾 Contenu du dépôt (repères) + +```text +game/scenarios/ Scénarios YAML (source de vérité) +kit-maitre-du-jeu/ Guide MJ + solutions + script +printables/ Cartes/indices + manifestes +audio/ Manifestes audio + ressources +tools/ Validation + export + génération +hardware/ Firmware & accessoires électroniques (option) +docs/ Mini-site / FAQ / ressources +``` + +--- + +## 🧷 Visuels + +![Prototype](./docs/assets/board.jpg) + +![Printables](./docs/assets/printables.png) + +--- + +## 🧑‍🎓 Licence + +- **Code** : MIT (`LICENSES/MIT.txt`) +- **Contenu créatif** (scénarios, docs, printables, assets) : CC BY‑NC 4.0 (`LICENSES/CC-BY-NC-4.0.txt`) + +--- + +## 🤝 Crédits + +**Auteur : Clément SAILLANT** +Signature : **⚛ L’électron rare** — **⚡ unstable by design** + +--- + +OpenGraph : `docs/assets/og.png` (1200×630) + diff --git a/assets/board.png b/assets/board.png new file mode 100644 index 0000000..3fcc1fd Binary files /dev/null and b/assets/board.png differ diff --git a/assets/cover.png b/assets/cover.png new file mode 100644 index 0000000..a2699f4 Binary files /dev/null and b/assets/cover.png differ diff --git a/assets/demo.gif b/assets/demo.gif new file mode 100644 index 0000000..ba1f9df Binary files /dev/null and b/assets/demo.gif differ diff --git a/assets/diagram.png b/assets/diagram.png new file mode 100644 index 0000000..2f9588c Binary files /dev/null and b/assets/diagram.png differ diff --git a/assets/diagram_site.png b/assets/diagram_site.png new file mode 100644 index 0000000..ebc217a Binary files /dev/null and b/assets/diagram_site.png differ diff --git a/assets/favicon.png b/assets/favicon.png new file mode 100644 index 0000000..d720520 Binary files /dev/null and b/assets/favicon.png differ diff --git a/assets/icons/icon_audio.png b/assets/icons/icon_audio.png new file mode 100644 index 0000000..cefd846 Binary files /dev/null and b/assets/icons/icon_audio.png differ diff --git a/assets/icons/icon_chip.png b/assets/icons/icon_chip.png new file mode 100644 index 0000000..5b304c8 Binary files /dev/null and b/assets/icons/icon_chip.png differ diff --git a/assets/icons/icon_flask.png b/assets/icons/icon_flask.png new file mode 100644 index 0000000..986f017 Binary files /dev/null and b/assets/icons/icon_flask.png differ diff --git a/assets/icons/icon_hat.png b/assets/icons/icon_hat.png new file mode 100644 index 0000000..615a31d Binary files /dev/null and b/assets/icons/icon_hat.png differ diff --git a/assets/icons/icon_keypad.png b/assets/icons/icon_keypad.png new file mode 100644 index 0000000..f1b1166 Binary files /dev/null and b/assets/icons/icon_keypad.png differ diff --git a/assets/logo.png b/assets/logo.png new file mode 100644 index 0000000..ea6bf2c Binary files /dev/null and b/assets/logo.png differ diff --git a/assets/og.png b/assets/og.png new file mode 100644 index 0000000..1c6fefe Binary files /dev/null and b/assets/og.png differ diff --git a/assets/poster.png b/assets/poster.png new file mode 100644 index 0000000..5a8719d Binary files /dev/null and b/assets/poster.png differ diff --git a/assets/printables.png b/assets/printables.png new file mode 100644 index 0000000..74818dc Binary files /dev/null and b/assets/printables.png differ diff --git a/docs/README.md b/docs/README.md new file mode 100644 index 0000000..fe1f078 --- /dev/null +++ b/docs/README.md @@ -0,0 +1,7 @@ +# Zacus — Docs + +Ce dossier est conçu pour être publié via **GitHub Pages** (source : `/docs`). + +- Accueil : `docs/index.md` +- FAQ : `docs/faq.md` +- Design : `docs/design.md` diff --git a/docs/README_FAQ_SNIPPET.md b/docs/README_FAQ_SNIPPET.md new file mode 100644 index 0000000..1880be2 --- /dev/null +++ b/docs/README_FAQ_SNIPPET.md @@ -0,0 +1,3 @@ +## FAQ & Dépannage + +- [FAQ (flash / SD / audio)](./docs/faq.md) diff --git a/docs/_config.yml b/docs/_config.yml new file mode 100644 index 0000000..e656afe --- /dev/null +++ b/docs/_config.yml @@ -0,0 +1,12 @@ +title: "Le Mystère du Professeur Zacus" +description: "Enquête scientifique immersive — scénarios YAML, printables, audio, modules ESP32/Arduino." +baseurl: "" +url: "" + +markdown: kramdown +kramdown: + input: GFM + +exclude: + - README.md + - README_FAQ_SNIPPET.md diff --git a/docs/_layouts/default.html b/docs/_layouts/default.html new file mode 100644 index 0000000..8e484c5 --- /dev/null +++ b/docs/_layouts/default.html @@ -0,0 +1,45 @@ + + + + + + {% if page.title %}{{ page.title }} — {% endif %}{{ site.title }} + + + + + + + + + + +
+
+ {{ content }} +
+ +
+
+
Code : MIT • Contenu : CC BY‑NC 4.0
+
© {{ site.time | date: '%Y' }} electron-rare • Zacus
+
+
+
+ + diff --git a/docs/assets/ChatGPT Image 25 févr. 2026 à 19_09_07.png b/docs/assets/ChatGPT Image 25 févr. 2026 à 19_09_07.png new file mode 100644 index 0000000..1d2e82e Binary files /dev/null and b/docs/assets/ChatGPT Image 25 févr. 2026 à 19_09_07.png differ diff --git a/docs/assets/ChatGPT Image 25 févr. 2026 à 19_09_10.png b/docs/assets/ChatGPT Image 25 févr. 2026 à 19_09_10.png new file mode 100644 index 0000000..a9388f5 Binary files /dev/null and b/docs/assets/ChatGPT Image 25 févr. 2026 à 19_09_10.png differ diff --git a/docs/assets/ChatGPT Image 25 févr. 2026 à 19_09_14.png b/docs/assets/ChatGPT Image 25 févr. 2026 à 19_09_14.png new file mode 100644 index 0000000..5410f07 Binary files /dev/null and b/docs/assets/ChatGPT Image 25 févr. 2026 à 19_09_14.png differ diff --git a/docs/assets/ChatGPT Image 25 févr. 2026 à 19_12_38.png b/docs/assets/ChatGPT Image 25 févr. 2026 à 19_12_38.png new file mode 100644 index 0000000..6b1d729 Binary files /dev/null and b/docs/assets/ChatGPT Image 25 févr. 2026 à 19_12_38.png differ diff --git a/docs/assets/ChatGPT Image 25 févr. 2026 à 19_12_41.png b/docs/assets/ChatGPT Image 25 févr. 2026 à 19_12_41.png new file mode 100644 index 0000000..4d9a71a Binary files /dev/null and b/docs/assets/ChatGPT Image 25 févr. 2026 à 19_12_41.png differ diff --git a/docs/assets/ChatGPT Image 25 févr. 2026 à 19_12_44.png b/docs/assets/ChatGPT Image 25 févr. 2026 à 19_12_44.png new file mode 100644 index 0000000..9daee61 Binary files /dev/null and b/docs/assets/ChatGPT Image 25 févr. 2026 à 19_12_44.png differ diff --git a/docs/assets/ChatGPT Image 25 févr. 2026 à 19_46_57.png b/docs/assets/ChatGPT Image 25 févr. 2026 à 19_46_57.png new file mode 100644 index 0000000..8346f44 Binary files /dev/null and b/docs/assets/ChatGPT Image 25 févr. 2026 à 19_46_57.png differ diff --git a/docs/assets/ChatGPT Image 25 févr. 2026, 19_06_05.png b/docs/assets/ChatGPT Image 25 févr. 2026, 19_06_05.png new file mode 100644 index 0000000..cd62544 Binary files /dev/null and b/docs/assets/ChatGPT Image 25 févr. 2026, 19_06_05.png differ diff --git a/docs/assets/ChatGPT Image 25 févr. 2026, 19_20_17.png b/docs/assets/ChatGPT Image 25 févr. 2026, 19_20_17.png new file mode 100644 index 0000000..428b715 Binary files /dev/null and b/docs/assets/ChatGPT Image 25 févr. 2026, 19_20_17.png differ diff --git a/docs/assets/ChatGPT Image 25 févr. 2026, 19_52_03.png b/docs/assets/ChatGPT Image 25 févr. 2026, 19_52_03.png new file mode 100644 index 0000000..428b715 Binary files /dev/null and b/docs/assets/ChatGPT Image 25 févr. 2026, 19_52_03.png differ diff --git a/docs/assets/board.jpg b/docs/assets/board.jpg new file mode 100644 index 0000000..e21bcd7 Binary files /dev/null and b/docs/assets/board.jpg differ diff --git a/docs/assets/cover.png b/docs/assets/cover.png new file mode 100644 index 0000000..ac89f85 Binary files /dev/null and b/docs/assets/cover.png differ diff --git a/docs/assets/demo.gif b/docs/assets/demo.gif new file mode 100644 index 0000000..ba1f9df Binary files /dev/null and b/docs/assets/demo.gif differ diff --git a/docs/assets/diagram.png b/docs/assets/diagram.png new file mode 100644 index 0000000..2f9588c Binary files /dev/null and b/docs/assets/diagram.png differ diff --git a/docs/assets/favicon.png b/docs/assets/favicon.png new file mode 100644 index 0000000..d720520 Binary files /dev/null and b/docs/assets/favicon.png differ diff --git a/docs/assets/icons/icon_audio.png b/docs/assets/icons/icon_audio.png new file mode 100644 index 0000000..cefd846 Binary files /dev/null and b/docs/assets/icons/icon_audio.png differ diff --git a/docs/assets/icons/icon_chip.png b/docs/assets/icons/icon_chip.png new file mode 100644 index 0000000..5b304c8 Binary files /dev/null and b/docs/assets/icons/icon_chip.png differ diff --git a/docs/assets/icons/icon_flask.png b/docs/assets/icons/icon_flask.png new file mode 100644 index 0000000..986f017 Binary files /dev/null and b/docs/assets/icons/icon_flask.png differ diff --git a/docs/assets/icons/icon_hat.png b/docs/assets/icons/icon_hat.png new file mode 100644 index 0000000..615a31d Binary files /dev/null and b/docs/assets/icons/icon_hat.png differ diff --git a/docs/assets/icons/icon_keypad.png b/docs/assets/icons/icon_keypad.png new file mode 100644 index 0000000..f1b1166 Binary files /dev/null and b/docs/assets/icons/icon_keypad.png differ diff --git a/docs/assets/logo.png b/docs/assets/logo.png new file mode 100644 index 0000000..ea6bf2c Binary files /dev/null and b/docs/assets/logo.png differ diff --git a/docs/assets/og.png b/docs/assets/og.png new file mode 100644 index 0000000..cf45547 Binary files /dev/null and b/docs/assets/og.png differ diff --git a/docs/assets/poster.png b/docs/assets/poster.png new file mode 100644 index 0000000..c0348a1 Binary files /dev/null and b/docs/assets/poster.png differ diff --git a/docs/assets/printables.png b/docs/assets/printables.png new file mode 100644 index 0000000..2f5192a Binary files /dev/null and b/docs/assets/printables.png differ diff --git a/docs/assets/repo-map.svg b/docs/assets/repo-map.svg deleted file mode 100644 index 86543e8..0000000 --- a/docs/assets/repo-map.svg +++ /dev/null @@ -1,57 +0,0 @@ - - Le Mystère du Professeur Zacus - Vue d'ensemble du dépôt - Schéma des trois piliers du dépôt: Kit Maître du jeu, Printables et Hardware. - - - - - - - Le Mystère du Professeur Zacus - Structure actuelle du dépôt - - - Kit Maître du jeu - • script minute-par-minute - • solution complète - • checklist matériel - • distribution des rôles - • guide anti-chaos - • stations modulaires - Path: kit-maitre-du-jeu/ - - - Printables - • invitations - • cartes / feuille d'enquête - • badges / règles 1 page - • ordre d'impression - Sous-structure: - - src/ - - export/pdf/ - - export/png/ - Path: printables/ - - - Hardware (optionnel) - • BOM - • câblage - • firmware Arduino / ESP32 - • boîtier - Firmware ESP32: - U_LOCK → U-SON → MP3 - Path: hardware/ - - - - - Objectif: documentation cohérente, livrables imprimables et firmware stable - diff --git a/docs/assets/site.css b/docs/assets/site.css new file mode 100644 index 0000000..15f0b65 --- /dev/null +++ b/docs/assets/site.css @@ -0,0 +1,165 @@ +/* Zacus mini-site — clean dark UI */ +:root{ + --bg: #0b1220; + --bg2:#0f1b2f; + --text:#eef5ff; + --muted:#c6d6f0cc; + --line:#ffffff1a; + --accent:#00decd; + --accent2:#78c8ff; + --shadow: 0 18px 50px rgba(0,0,0,.35); + --radius: 18px; +} + +*{ box-sizing:border-box; } +html,body{ height:100%; } +body{ + margin:0; + font-family: ui-sans-serif, system-ui, -apple-system, Segoe UI, Roboto, Helvetica, Arial; + background: radial-gradient(1200px 800px at 20% 10%, rgba(0,222,205,.14), transparent 55%), + radial-gradient(900px 700px at 80% 30%, rgba(120,200,255,.12), transparent 60%), + linear-gradient(180deg, var(--bg), var(--bg2)); + color: var(--text); +} + +a{ color: var(--accent2); text-decoration:none; } +a:hover{ text-decoration:underline; } +a[aria-current="page"]{ color: var(--text); } + +.wrap{ + width: min(980px, calc(100% - 40px)); + margin: 0 auto; +} + +.site-header{ + position: sticky; + top: 0; + backdrop-filter: blur(12px); + background: rgba(8, 14, 26, 0.72); + border-bottom: 1px solid var(--line); + z-index: 10; +} + +.header-inner{ + display:flex; + align-items:center; + justify-content:space-between; + padding: 12px 0; + gap: 18px; +} + +.brand{ + display:flex; + align-items:center; + gap:12px; + color: var(--text); + min-width: 240px; +} + +.brand-logo{ + width: 40px; + height: 40px; + border-radius: 12px; + border: 1px solid var(--line); +} + +.brand-title{ + font-weight: 780; + letter-spacing: .2px; + line-height: 1.05; +} + +.brand-sub{ + color: var(--muted); + font-size: 12px; + margin-top: 2px; +} + +.nav{ + display:flex; + gap: 16px; + font-weight: 650; + opacity: .95; + flex-wrap: wrap; +} + +.content{ padding: 26px 0 56px; } + +.card{ + background: linear-gradient(180deg, rgba(255,255,255,.06), rgba(255,255,255,.03)); + border: 1px solid var(--line); + border-radius: var(--radius); + box-shadow: var(--shadow); + padding: 26px 26px 18px; +} + +.card img{ + max-width: 100%; + height: auto; + border-radius: 14px; + border: 1px solid var(--line); +} + +h1,h2,h3{ letter-spacing: .1px; } +h1{ font-size: clamp(28px, 3.4vw, 42px); margin-top: 6px; } +h2{ font-size: clamp(20px, 2.4vw, 28px); margin-top: 26px; } +h3{ font-size: 18px; margin-top: 18px; } + +p,li{ line-height: 1.55; color: var(--muted); } + +code, pre{ + font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace; +} + +pre{ + background: rgba(0,0,0,.35); + border: 1px solid var(--line); + border-radius: 14px; + padding: 14px 14px; + overflow:auto; +} + +blockquote{ + border-left: 3px solid rgba(0,222,205,.45); + margin: 18px 0; + padding: 8px 14px; + background: rgba(0,0,0,.22); + border-radius: 12px; +} + +table{ + width:100%; + border-collapse: collapse; + margin: 16px 0; + overflow:hidden; + border-radius: 14px; + border: 1px solid var(--line); +} +th,td{ padding: 10px 12px; border-bottom: 1px solid var(--line); } +th{ text-align:left; color: var(--text); background: rgba(255,255,255,.04); } + +.site-footer{ padding: 18px 4px 0; } +.muted{ color: var(--muted); opacity:.9; font-size: 13px; } + +.badges{ + display:flex; + flex-wrap:wrap; + gap:10px; + margin: 14px 0; +} +.badge{ + display:inline-flex; + align-items:center; + gap:8px; + padding: 10px 12px; + border: 1px solid var(--line); + border-radius: 14px; + background: rgba(0,0,0,.25); + color: var(--text); +} +.badge img{ + width: 22px; + height: 22px; + border: none; + border-radius: 0; +} diff --git a/docs/design.md b/docs/design.md new file mode 100644 index 0000000..a8f64ad --- /dev/null +++ b/docs/design.md @@ -0,0 +1,52 @@ +--- +layout: default +title: Design system +description: Couleurs, typographies, prompts ImageGen et guidelines pour produire des assets cohérents. +--- + +# Design system (Zacus) + +## Direction artistique (proposée) + +**Noir / néon labo** : ambiance dossier secret + instruments scientifiques + UI rétro-futuriste. +Mots-clés : *noir, laboratoire, néon teal, blueprint, preuves, enquête*. + +### Palette +- Fond : `#0b1220` / `#0f1b2f` +- Accent : `#00decd` +- Accent secondaire : `#78c8ff` +- Texte : `#eef5ff` +- Texte secondaire : `#c6d6f0` + +### Typos +- Titres : **Cabin Bold** (ou équivalent sans-serif) +- Texte : **Cabin Regular** +- Code/console : **DejaVu Sans Mono** + +--- + +## Assets inclus (placeholders “design”) + +Ces images sont des **assets de base** (style cohérent) générés sans ImageGen : +- `assets/cover.png` +- `assets/og.png` +- `assets/poster.png` +- `assets/logo.png` +- `assets/icons/*.png` + +Pour des visuels plus riches (illustrations, personnages, scènes), vois la section **Prompts ImageGen**. + +--- + +## Prompts ImageGen + +> ⚠️ Dans cet environnement, je ne peux pas exécuter ImageGen directement. +> Tu peux cependant **copier-coller** ces prompts dans GPT‑5 (image generation activé) et exporter en PNG aux dimensions recommandées. + +- [Pack complet de prompts](../brand/image_gen_prompts.md) + +### Conseils de cohérence +- Réutiliser les mêmes mots-clés de style et la même palette. +- Éviter d’intégrer du texte dans l’image (ajouter le texte dans Figma/Canva ensuite). +- Demander un fond “safe area” pour laisser de la place au titre. + diff --git a/docs/faq.md b/docs/faq.md new file mode 100644 index 0000000..51d6cae --- /dev/null +++ b/docs/faq.md @@ -0,0 +1,118 @@ +--- +layout: default +title: FAQ & dépannage +description: Flash PlatformIO, SD, audio (ESP32) — symptômes, causes fréquentes, correctifs. +--- + +# FAQ & Dépannage (ESP32 / SD / Audio) + +Cette FAQ est volontairement **pratique** : symptômes → causes fréquentes → correctifs. + +--- + +## Flash / Upload (PlatformIO) + +### « Timed out waiting for packet header » / Upload qui échoue +Causes fréquentes : +- câble USB “charge only” (pas de data), +- port série incorrect, +- board en mode bootloader non activé. + +Correctifs : +- essaie un autre câble + un autre port USB, +- vérifie le port : + ```bash + pio device list + ``` +- lance un upload puis **maintien BOOT** (si la carte le demande) jusqu’au démarrage de l’upload, +- essaye un effacement complet : + ```bash + pio run -t erase + pio run -t upload + ``` + +### Mauvais environnement PlatformIO +Symptôme : ça compile mais pas pour la bonne carte / mauvais pinout. + +Correctifs : +- vérifie `platformio.ini` (env, framework, flags), +- compile explicitement : + ```bash + pio run -e esp32dev + ``` + +--- + +## Carte SD + +### La SD n’est pas détectée +Causes fréquentes : +- formatage incompatible, +- câblage/pins SD différents selon la carte, +- init SD trop tôt (avant montage / alim stable). + +Correctifs : +- formate en **FAT32** (recommandé) avec une taille d’unité d’allocation standard, +- teste une SD plus petite (≤ 32 Go) pour éliminer un souci exFAT, +- loggue le statut au boot (montage OK / erreur). + +### Fichiers “introuvables” alors qu’ils sont présents +Causes fréquentes : +- chemins / casse (`/Music` vs `/music`), +- séparation `/` vs `\`, +- caractères spéciaux / noms trop longs. + +Correctifs : +- impose une convention : `/music/`, `/audio/`, `/print/`… +- évite accents et caractères exotiques dans les noms, +- affiche dans les logs les chemins exacts. + +--- + +## Audio + +### Craquements / coupures +Causes fréquentes : +- débit SD insuffisant (ou fragmentation), +- buffer audio trop petit, +- resampling / décodage trop coûteux. + +Correctifs : +- copie les fichiers sur une SD correcte (UHS‑I / A1) et évite la saturation, +- augmente les buffers (si possible) et privilégie la lecture séquentielle, +- teste d’abord un WAV PCM simple (44.1 kHz / 16-bit) pour isoler le problème. + +### Volume trop faible / saturé +Causes fréquentes : +- gain numérique trop élevé (clip), +- conversion mono/stéréo, +- réglage codec/I2S. + +Correctifs : +- démarre avec un gain faible puis augmente, +- vérifie que l’échantillonnage (sample rate) correspond, +- si tu appliques des effets (comp, EQ), désactive-les pour tester. + +--- + +## Affichage / perf (bonus) + +### FPS faible / tearing +Correctifs : +- privilégie **double-buffer partiel** + flush DMA, +- évite les redraw complets : utilise des “dirty rect” / mise à jour ciblée, +- limite les alpha/transparences lourdes dans LVGL. + +--- + +## Logs utiles + +### Obtenir les logs série +```bash +pio device monitor -b 115200 +``` + +### Lister les devices +```bash +pio device list +``` diff --git a/docs/index.md b/docs/index.md index 896f037..dd4205f 100644 --- a/docs/index.md +++ b/docs/index.md @@ -1,20 +1,119 @@ -# Le Mystère du Professeur Zacus +--- +layout: default +title: Le Mystère du Professeur Zacus +description: Une enquête scientifique immersive pour anniversaire (printables, audio, modules électroniques). +--- -## Ressources principales -- Kit Maître du jeu : `kit-maitre-du-jeu/` -- Scénario canon : `game/scenarios/zacus_v1.yaml` -- Printables & workflow : `printables/` + `printables/WORKFLOW.md` -- Audio canon : `audio/manifests/zacus_v1_audio.yaml` + `game/prompts/audio/` -- Brief scénarios : `docs/_generated/SCENARIO_BRIEF.md` -- Maintenance : `docs/maintenance-repo.md`, `docs/repo-audit.md`, `docs/repo-status.md` +# 🎩 Le Mystère du Professeur Zacus -## Guides à consulter -- Quickstart (déploiement terrain) : `docs/QUICKSTART.md` -- Styleguide (ton & structure) : `docs/STYLEGUIDE.md` -- Workflows (validate/export) : `docs/WORKFLOWS.md` -- Glossaire des identifiants : `docs/GLOSSARY.md` -- Orchestration ZeroClaw (préflight + agent) : `docs/zeroclaw_orchestration.md` -- Contribuer (workflow & licence) : `CONTRIBUTING.md` +![Couverture](./assets/cover.png) -## Astuce -Active GitHub Pages sur `/docs` pour exposer cette page et offrir un accès direct au jeu. +Le Mystère du Professeur Zacus : une enquête scientifique immersive pour anniversaire, jouable en famille ou entre ami·e·s. + +Scénarios modulaires (YAML), supports imprimables, audio, et accessoires électroniques (ESP32/Arduino). + +
+
hatScénarios modulaires
+
audioAudio & checkpoints
+
chipModules électroniques
+
flaskThème labo/science
+
+ +--- + +## Structure du projet + +```text +├── game/scenarios/*.yaml Scénarios (source de vérité) +├── audio/manifests/*.yaml Manifeste audio + fichiers associés +├── printables/manifests/*.yaml Manifeste printables + PDF/PNG +├── hardware/firmware/esp32/ Firmware (lecture seule sans approbation) +├── tools/ Outils Python (validation, export, génération) +├── docs/ Guides + mini-site GitHub Pages +├── assets/ Images (README / marketing) +``` + +--- + +## Démarrage rapide + +1. Imprime les printables (cartes, indices). +2. (Option) Flash les modules électroniques. +3. Lis le scénario YAML et place les indices. +4. Lance la partie et suis le guide MJ. + +--- + +## Guides & documentation + +- [STRUCTURE.md](STRUCTURE.md) : Architecture détaillée +- [QUICKSTART.md](QUICKSTART.md) : Démarrage express +- [WORKFLOWS.md](WORKFLOWS.md) : Workflows validation/export +- [faq.md](faq.md) : FAQ dépannage + +--- + +## Licences + +- Code : MIT — voir [../LICENSE](../LICENSE) +- Contenu créatif : CC BY‑NC 4.0 — voir [../LICENSE-CONTENT.md](../LICENSE-CONTENT.md) + +--- + +## Assets + +- Couverture : assets/cover.png +- OpenGraph : assets/og.png +- Poster : assets/poster.png +- Logo : assets/logo.png +- Diagramme : assets/diagram.png +- Aperçu printables : assets/printables.png + +## Démo + +![Démo](./assets/demo.gif) + +--- + +## Jouer (MJ) + +### Checklist rapide +1. Imprime les **printables** (cartes, indices). +2. (Option) Flash les modules électroniques. +3. Lis le scénario et place les indices. +4. Lance la partie et suis le guide MJ. + +👉 Voir aussi : [FAQ (flash / SD / audio)](./faq) + +--- + +## Développer / contribuer + +### Structure du dépôt +- `game/scenarios/` — scénarios (source de vérité) +- `audio/` — manifestes et ressources audio +- `printables/` — manifestes + PDF/PNG +- `tools/` — outils Python (validation, export) +- `hardware/firmware/esp32/` — firmware (**lecture seule** sans approbation) + +### Démarrage rapide +```bash +python3 -m pip install -r tools/requirements.txt +python3 tools/scenario/validate_scenario.py game/scenarios/mon_scenario.yaml +``` + +--- + +## Visuels & matériel + +![Prototype](./assets/board.jpg) + +![Printables](./assets/printables.png) + +![Diagramme](./assets/diagram.png) + +--- + +## Licences +- **Code** : MIT (`LICENSE`) +- **Contenu** : CC BY‑NC 4.0 (`LICENSE-CONTENT.md`) diff --git a/docs/pages.md b/docs/pages.md new file mode 100644 index 0000000..d7f8177 --- /dev/null +++ b/docs/pages.md @@ -0,0 +1,16 @@ +--- +layout: default +title: Publier le site +description: Configuration rapide GitHub Pages pour /docs. +--- + +# Publier le mini-site (GitHub Pages) + +1. Sur GitHub : **Settings → Pages** +2. **Build and deployment** + - Source : **Deploy from a branch** + - Branch : `main` (ou `master`) + - Folder : **/docs** +3. GitHub affiche l’URL publique (généralement `https://.github.io//`). + +Si tu utilises un sous-chemin personnalisé, ajuste `baseurl` dans `docs/_config.yml`. diff --git a/scenario-ai-coherence/zacus_conversation_bundle_v3/CODEX_PROMPT.md b/scenario-ai-coherence/CODEX_PROMPT.md similarity index 100% rename from scenario-ai-coherence/zacus_conversation_bundle_v3/CODEX_PROMPT.md rename to scenario-ai-coherence/CODEX_PROMPT.md diff --git a/scenario-ai-coherence/README.md b/scenario-ai-coherence/README.md index d2979c7..36bffe0 100644 --- a/scenario-ai-coherence/README.md +++ b/scenario-ai-coherence/README.md @@ -1,21 +1,24 @@ -# Scenario AI Coherence -## Rôle de ce dossier -Ce dossier contient les artefacts de cohérence scénario générés par IA et validés par des humains. -### Structure +# Zacus Scenario AI Coherence — Bundle Unifié -- **`version-finale/`** : Contenus finaux validés et approuvés pour utilisation dans le jeu -- *Futurs artefacts* : Versions intermédiaires, logs de génération, et autres documents de travail IA +Ce dossier contient tous les artefacts validés, fusionnés et prêts à l’intégration : -## Processus +- scenario_complet.md : déroulé narratif, synthèse, fiches, supports +- charte_graphique.yaml / charte_graphique.json : charte visuelle +- listing_fichiers.yaml / listing_fichiers.json : listing supports +- scenario_canonical.yaml : scénario canonique YAML +- scenario_promptable_template.yaml : template éditable +- scenario_runtime.json : runtime JSON +- zacus_v2.yaml : narration MJ alignée +- fsm_mermaid.md : diagramme FSM +- CODEX_PROMPT.md : consignes firmware/scénario +- INTRO OFFICIELLE – VERSION AVEC HOT-LINE.md : intro alternative -1. **Génération IA** : Création initiale de contenu scénario via outils d'IA -2. **Validation humaine** : Révision et approbation par les mainteneurs -3. **Intégration** : Déplacement vers `version-finale/` une fois validé -4. **Utilisation** : Référencé par les autres composants du kit d'enquête +Tous les sous-dossiers ont été supprimés. Les fichiers sont fusionnés, cohérents et validés. + +Pour toute intégration, utilisez scenario_complet.md pour le déroulé, scenario_canonical.yaml/scenario_runtime.json pour la technique, et les fichiers charte/listing pour les assets. ## Licence - -Contenus de ce dossier : **CC BY-NC 4.0** (voir `LICENSES/CC-BY-NC-4.0.txt`) +Contenus : **CC BY-NC 4.0** (voir LICENSES/CC-BY-NC-4.0.txt) diff --git a/scenario-ai-coherence/zacus_conversation_bundle_v3/fsm_mermaid.md b/scenario-ai-coherence/fsm_mermaid.md similarity index 79% rename from scenario-ai-coherence/zacus_conversation_bundle_v3/fsm_mermaid.md rename to scenario-ai-coherence/fsm_mermaid.md index 8ad5378..42eb03a 100644 --- a/scenario-ai-coherence/zacus_conversation_bundle_v3/fsm_mermaid.md +++ b/scenario-ai-coherence/fsm_mermaid.md @@ -38,12 +38,4 @@ stateDiagram-v2 STEP_QR_DETECTOR --> STEP_RTC_ESP_ETAPE2: event:QR_TIMEOUT STEP_QR_DETECTOR --> STEP_FINAL_WIN: serial:BTN_NEXT STEP_QR_DETECTOR --> STEP_FINAL_WIN: unlock:UNLOCK_QR - STEP_QR_DETECTOR --> STEP_FINAL_WIN: action:ACTION_FORCE_ETAPE2 - STEP_QR_DETECTOR --> STEP_FINAL_WIN: serial:FORCE_WIN_ETAPE2 - - STEP_FINAL_WIN --> SCENE_MEDIA_MANAGER: timer:WIN_DUE - STEP_FINAL_WIN --> SCENE_MEDIA_MANAGER: serial:BTN_NEXT - STEP_FINAL_WIN --> SCENE_MEDIA_MANAGER: unlock:UNLOCK - STEP_FINAL_WIN --> SCENE_MEDIA_MANAGER: action:FORCE_WIN_ETAPE2 - STEP_FINAL_WIN --> SCENE_MEDIA_MANAGER: serial:FORCE_WIN_ETAPE2 ``` diff --git a/scenario-ai-coherence/version-finale/ INTRO OFFICIELLE – VERSION AVEC HOT-LINE.odt b/scenario-ai-coherence/version-finale/ INTRO OFFICIELLE – VERSION AVEC HOT-LINE.odt deleted file mode 100644 index 38d0c6a..0000000 Binary files a/scenario-ai-coherence/version-finale/ INTRO OFFICIELLE – VERSION AVEC HOT-LINE.odt and /dev/null differ diff --git a/scenario-ai-coherence/version-finale/DOCUMENTS VISUELS ENCORE À GÉNÉRER.odt b/scenario-ai-coherence/version-finale/DOCUMENTS VISUELS ENCORE À GÉNÉRER.odt deleted file mode 100644 index 84e5588..0000000 Binary files a/scenario-ai-coherence/version-finale/DOCUMENTS VISUELS ENCORE À GÉNÉRER.odt and /dev/null differ diff --git a/scenario-ai-coherence/version-finale/ETAPES 1.odt b/scenario-ai-coherence/version-finale/ETAPES 1.odt deleted file mode 100644 index dbd838e..0000000 Binary files a/scenario-ai-coherence/version-finale/ETAPES 1.odt and /dev/null differ diff --git a/scenario-ai-coherence/version-finale/ETAPES 2&3.odt b/scenario-ai-coherence/version-finale/ETAPES 2&3.odt deleted file mode 100644 index db28d98..0000000 Binary files a/scenario-ai-coherence/version-finale/ETAPES 2&3.odt and /dev/null differ diff --git a/scenario-ai-coherence/version-finale/ETAPES 4.odt b/scenario-ai-coherence/version-finale/ETAPES 4.odt deleted file mode 100644 index f6500d2..0000000 Binary files a/scenario-ai-coherence/version-finale/ETAPES 4.odt and /dev/null differ diff --git a/scenario-ai-coherence/version-finale/FINAL.odt b/scenario-ai-coherence/version-finale/FINAL.odt deleted file mode 100644 index 17ca304..0000000 Binary files a/scenario-ai-coherence/version-finale/FINAL.odt and /dev/null differ diff --git a/scenario-ai-coherence/version-finale/LISTING FICHIER.odt b/scenario-ai-coherence/version-finale/LISTING FICHIER.odt deleted file mode 100644 index e08baf0..0000000 Binary files a/scenario-ai-coherence/version-finale/LISTING FICHIER.odt and /dev/null differ diff --git a/scenario-ai-coherence/version-finale/Twist.odt b/scenario-ai-coherence/version-finale/Twist.odt deleted file mode 100644 index baf1c0a..0000000 Binary files a/scenario-ai-coherence/version-finale/Twist.odt and /dev/null differ diff --git a/scenario-ai-coherence/version-finale/charte graphique.odt b/scenario-ai-coherence/version-finale/charte graphique.odt deleted file mode 100644 index e436f8d..0000000 Binary files a/scenario-ai-coherence/version-finale/charte graphique.odt and /dev/null differ diff --git a/scenario-ai-coherence/version-finale/fiches équipes.odt b/scenario-ai-coherence/version-finale/fiches équipes.odt deleted file mode 100644 index 072f954..0000000 Binary files a/scenario-ai-coherence/version-finale/fiches équipes.odt and /dev/null differ diff --git a/scenario-ai-coherence/version-finale/intro.odt b/scenario-ai-coherence/version-finale/intro.odt deleted file mode 100644 index 5da4558..0000000 Binary files a/scenario-ai-coherence/version-finale/intro.odt and /dev/null differ diff --git a/scenario-ai-coherence/version-finale/résumé déroulé.odt b/scenario-ai-coherence/version-finale/résumé déroulé.odt deleted file mode 100644 index 30a35a9..0000000 Binary files a/scenario-ai-coherence/version-finale/résumé déroulé.odt and /dev/null differ diff --git a/scenario-ai-coherence/zacus_conversation_bundle_v3/CONVERSATION_SUMMARY.md b/scenario-ai-coherence/zacus_conversation_bundle_v3/CONVERSATION_SUMMARY.md deleted file mode 100644 index 1448b26..0000000 --- a/scenario-ai-coherence/zacus_conversation_bundle_v3/CONVERSATION_SUMMARY.md +++ /dev/null @@ -1,18 +0,0 @@ -# Zacus — Conversation Summary (bundle v3) - -This bundle consolidates the key outputs from the conversation: -- Promptable scenario template (user-edited section: prompt_input) -- Canonical scenario YAML (STEP_*/SCENE_* conventions) -- Runtime JSON (DEFAULT.json) -- FSM diagram (Mermaid) -- Codex prompt to update repo targets -- Narrative zacus_v2.yaml aligned with the runtime + real-world gameplay - -Key decisions captured: -- Prototype is U-SON. -- Act 1 (~45 min): LA 440 Hz stabilization (STEP_LA_DETECTOR). -- Act 2 (~60 min): Zone 4 piano-alphabet puzzle → play "LEFOU" (letters randomly placed; A anchored on LA 440 Hz). -- QR final payload is "WIN", hidden behind the portrait in the Archives. -- After QR success: Media Hub + persistent boot into media_manager. - -Generated: 2026-02-25 (Europe/Paris) diff --git a/scenario-ai-coherence/zacus_conversation_bundle_v3/README.md b/scenario-ai-coherence/zacus_conversation_bundle_v3/README.md deleted file mode 100644 index cc58dcb..0000000 --- a/scenario-ai-coherence/zacus_conversation_bundle_v3/README.md +++ /dev/null @@ -1,43 +0,0 @@ -# Zacus Conversation Bundle (v3) - -## Purpose -Bundle de travail conversationnel/IA conservé en dehors de la source canon gameplay (`game/scenarios/*.yaml`). - -## Files -- `scenario_promptable_template.yaml`: template éditable (input prompt) -- `scenario_canonical.yaml`: YAML canonique conversation bundle -- `scenario_runtime.json`: JSON runtime dérivé -- `fsm_mermaid.md`: diagramme FSM -- `CODEX_PROMPT.md`: prompt Codex prêt à l'emploi -- `zacus_v2.yaml`: narration MJ alignée bundle -- `CONVERSATION_SUMMARY.md`: synthèse des décisions - -## Validation workflow -1. Installer les dépendances validateurs : - - `bash tools/setup/install_validators.sh` -2. Valider la cohérence interne du bundle : - - `python3 tools/scenario/validate_runtime_bundle.py` -3. Lancer les validateurs projet (non-régression canon/audio/printables) : - - `python3 tools/scenario/validate_scenario.py game/scenarios/zacus_v1.yaml` - - `python3 tools/scenario/export_md.py game/scenarios/zacus_v1.yaml` - - `python3 tools/audio/validate_manifest.py audio/manifests/zacus_v1_audio.yaml` - - `python3 tools/printables/validate_manifest.py printables/manifests/zacus_v1_printables.yaml` - -## Notes -- Ce bundle n'est pas promu automatiquement dans `game/scenarios/*.yaml`. -- Toute promotion doit passer par une revue fonctionnelle dédiée. -Files: -- scenario_promptable_template.yaml : your editable template (prompt_input) -- scenario_canonical.yaml : canonical YAML (copy into docs/... target) -- scenario_runtime.json : runtime JSON (copy into data/story/scenarios/DEFAULT.json) -- fsm_mermaid.md : FSM diagram -- CODEX_PROMPT.md : ready-to-paste Codex prompt -- zacus_v2.yaml : narrative scenario aligned with runtime + gameplay reality -- CONVERSATION_SUMMARY.md : what changed / key decisions - -Typical flow: -1) Update prompt_input in scenario_promptable_template.yaml if needed. -2) Use canonical/runtime files to update repo targets. -3) Use zacus_v2.yaml as the printed narrative / MJ reference for the real game. - -Generated: 2026-02-25 diff --git a/scenario-ai-coherence/zacus_conversation_bundle_v3/scenario_canonical.yaml b/scenario-ai-coherence/zacus_conversation_bundle_v3/scenario_canonical.yaml deleted file mode 100644 index 1608c84..0000000 --- a/scenario-ai-coherence/zacus_conversation_bundle_v3/scenario_canonical.yaml +++ /dev/null @@ -1,291 +0,0 @@ -# Zacus Scenario — Canonical YAML (v3) -# Generated: 2026-02-25 -# -# Conventions: -# - step_id = STEP_*, screen_scene_id = SCENE_* -# - led_policy is a sibling of transitions (NOT nested inside) -# - QR rule scene_id aligned to SCENE_QR_DETECTOR -# - Final transitions go to SCENE_MEDIA_MANAGER (hub scene) -# -# Narrative anchors (conversation): -# - Prototype: U-SON -# - Acte 1 (~45min): LA 440 Hz (STEP_LA_DETECTOR) -# - Acte 2 (~60min): Zone 4 piano-alphabet → jouer "LEFOU" (STEP_LEFOU_DETECTOR) -# * Lettres collées en ordre aléatoire sur touches blanches -# * A placé sur la touche correspondant au LA 440 Hz (ancre) -# - QR final: payload "WIN", caché derrière le portrait dans la Salle des Archives - -prompt_input: - meta: - request_name: "DEFAULT_UNLOCK_WIN_ETAPE2" - owner: "clement" - board_target: "freenove_esp32s3" - objective: "U-SON: Acte1 LA440 (~45min) -> Acte2 piano 'LEFOU' (~60min) -> QR WIN -> Media Manager (persistant)" - - boot_policy: - startup_mode: "story" # story | media_manager - persist_after_validation: true - rollback_command_required: true - - qr_rule: - enabled: true - scene_id: "SCENE_QR_DETECTOR" - expected_payload: "WIN" - match_mode: "exact" # exact | prefix | contains - case_insensitive: true - success_event: "UNLOCK_QR" - failure_event: "QR_INVALID" - - media_hub: - enabled: true - hub_scene_id: "SCENE_MEDIA_MANAGER" - entries: - - "SCENE_PHOTO_MANAGER" - - "SCENE_MP3_PLAYER" - - "SCENE_READY" - - led_policy: - strict_rgb: true - defaults: - ws2812: 1 - led_auto: 1 - rgb: "18/45/95" - scene_overrides: - - scene_id: "SCENE_LA_DETECTOR" - rgb: "dynamic_tuner_or_off" - - custom_steps: [] - - serial_test_plan: - - "SC_LOAD DEFAULT" - - "SCENE_GOTO SCENE_U_SON_PROTO" - - "QR_SIM WIN" - - "SC_EVENT UNLOCK_QR" - - "BOOT_MODE_STATUS" - - "RESET" - - acceptance_criteria: - - "Pas de PANIC|ASSERT|ABORT|REBOOT|rst:" - - "Transitions scene avec ACK ... ok=1" - - "Ownership camera/mic/amp coherent" - - "LED WS2812 conformes policy + RGB" - - "Boot mode media_manager persistant apres QR valide" - - notes: - - "Prototype: U-SON." - - "Etape1: LA 440 Hz stable (Acte1 ~45min)." - - "Etape2: piano-alphabet → jouer 'LEFOU' (Acte2 ~60min)." - - "QR WIN: caché derrière le portrait (Salle des Archives)." - - "SCENE_QR_DETECTOR a un timeout (QR_TIMEOUT) pour eviter le blocage." - -scenario: - id: "DEFAULT" - version: 2 - initial_step: "STEP_U_SON_PROTO" - app_bindings: - - "APP_AUDIO" - - "APP_SCREEN" - - "APP_GATE" - - "APP_WIFI" - - "APP_ESPNOW" - - "APP_SONAR" - - "APP_SD" - - "APP_CAMERA" - - "APP_LED" - - "APP_SERIAL" - - "APP_TIMER" - - "APP_UNLOCK" - - "APP_QR" - - "APP_INPUT" - - "APP_LOG" - - "APP_ACTION" - -steps_runtime_order: - - - step_id: "STEP_U_SON_PROTO" - screen_scene_id: "SCENE_U_SON_PROTO" - audio_pack_id: "PACK_BOOT_RADIO" - actions: - - "ACTION_TRACE_STEP" - - "ACTION_HW_LED_ALERT" - transitions: - - "audio_done:loop->STEP_U_SON_PROTO" - - "BTN:ANY->STEP_LA_DETECTOR" - - "serial:FORCE_ETAPE2->STEP_LA_DETECTOR" - led_policy: - ws2812_1: on - ws2812_2: on - ws2812_3: on - ws2812_4: on - animation: "random_one_blink" - brightness: "random_bright" - rgb: "random_color" - - - step_id: "STEP_LA_DETECTOR" - screen_scene_id: "SCENE_LA_DETECTOR" - audio_pack_id: "" - actions: - - "ACTION_TRACE_STEP" - - "ACTION_QUEUE_SONAR" - transitions: - - "timer:ETAPE2_DUE->STEP_U_SON_PROTO" - - "serial:BTN_NEXT->STEP_RTC_ESP_ETAPE1" - - "unlock:UNLOCK->STEP_RTC_ESP_ETAPE1" - - "action:ACTION_FORCE_ETAPE2->STEP_RTC_ESP_ETAPE1" - - "serial:FORCE_WIN_ETAPE1->STEP_RTC_ESP_ETAPE1" - led_policy: - ws2812_1: on - ws2812_2: on - ws2812_3: on - ws2812_4: on - animation: "dynamic_tuner" - brightness: "100%" - rgb: "random_color" - - - step_id: "STEP_RTC_ESP_ETAPE1" - screen_scene_id: "SCENE_WIN_ETAPE1" - audio_pack_id: "PACK_CONFIRM_WIN_ETAPE1" - actions: - - "ACTION_TRACE_STEP" - - "ACTION_HW_LED_ALERT" - - "ACTION_ESP_NOW_SEND_ETAPE1" - - "ACTION_QUEUE_SONAR" - transitions: - - "esp_now:ACK_WIN1->STEP_WIN_ETAPE1" - - "serial:FORCE_DONE->STEP_WIN_ETAPE1" - led_policy: - ws2812_1: on - ws2812_2: off - ws2812_3: off - ws2812_4: on - animation: "breathing" - brightness: "random_bright" - rgb: "random_color" - - - step_id: "STEP_WIN_ETAPE1" - screen_scene_id: "SCENE_WIN_ETAPE1" - audio_pack_id: "PACK_WIN" - actions: - - "ACTION_TRACE_STEP" - - "ACTION_HW_LED_ALERT" - transitions: - - "serial:BTN_NEXT->STEP_WARNING" - - "serial:FORCE_DONE->STEP_WARNING" - - "esp_now:ACK_WARNING->STEP_WARNING" - led_policy: - ws2812_1: on - ws2812_2: off - ws2812_3: off - ws2812_4: on - animation: "K2000" - brightness: "K2000" - rgb: "red" - - - step_id: "STEP_WARNING" - screen_scene_id: "SCENE_WARNING" - audio_pack_id: "PACK_BOOT_RADIO" - actions: - - "ACTION_TRACE_STEP" - - "ACTION_HW_LED_ALERT" - transitions: - - "audio_done:loop->STEP_WARNING" - - "BTN:ANY->STEP_LEFOU_DETECTOR" - - "serial:FORCE_ETAPE2->STEP_LEFOU_DETECTOR" - led_policy: - ws2812_1: on - ws2812_2: on - ws2812_3: on - ws2812_4: on - animation: "blink_all" - brightness: "100%" - rgb: "red" - - - step_id: "STEP_LEFOU_DETECTOR" - screen_scene_id: "SCENE_LEFOU_DETECTOR" - audio_pack_id: "" - actions: - - "ACTION_TRACE_STEP" - - "ACTION_QUEUE_SONAR" - transitions: - - "timer:ETAPE2_DUE->STEP_WARNING" - - "serial:BTN_NEXT->STEP_RTC_ESP_ETAPE2" - - "unlock:UNLOCK->STEP_RTC_ESP_ETAPE2" - - "action:ACTION_FORCE_ETAPE2->STEP_RTC_ESP_ETAPE2" - - "serial:FORCE_WIN_ETAPE2->STEP_RTC_ESP_ETAPE2" - led_policy: - ws2812_1: on - ws2812_2: on - ws2812_3: on - ws2812_4: on - animation: "dynamic_tuner" - brightness: "100%" - rgb: "random_color" - - - step_id: "STEP_RTC_ESP_ETAPE2" - screen_scene_id: "SCENE_WIN_ETAPE2" - audio_pack_id: "PACK_CONFIRM_WIN_ETAPE2" - actions: - - "ACTION_TRACE_STEP" - - "ACTION_HW_LED_ALERT" - - "ACTION_ESP_NOW_SEND_ETAPE2" - - "ACTION_QUEUE_SONAR" - transitions: - - "esp_now:ACK_WIN2->STEP_QR_DETECTOR" - - "serial:FORCE_DONE->STEP_QR_DETECTOR" - led_policy: - ws2812_1: on - ws2812_2: off - ws2812_3: off - ws2812_4: on - animation: "breathing" - brightness: "random_bright" - rgb: "random_color" - - - step_id: "STEP_QR_DETECTOR" - screen_scene_id: "SCENE_QR_DETECTOR" - audio_pack_id: "" - actions: - - "ACTION_TRACE_STEP" - - "ACTION_QR_CODE_SCANNER_START" - - "ACTION_QR_TIMEOUT_30S" - transitions: - - "timer:ETAPE2_DUE->STEP_RTC_ESP_ETAPE2" - - "event:QR_TIMEOUT->STEP_RTC_ESP_ETAPE2" - - "serial:BTN_NEXT->STEP_FINAL_WIN" - - "unlock:UNLOCK_QR->STEP_FINAL_WIN" - - "action:ACTION_FORCE_ETAPE2->STEP_FINAL_WIN" - - "serial:FORCE_WIN_ETAPE2->STEP_FINAL_WIN" - led_policy: - ws2812_1: on - ws2812_2: on - ws2812_3: on - ws2812_4: on - animation: "bargraph_qr_trigger" - brightness: "bargraph" - rgb: "bargraph_red_to_green" - - - step_id: "STEP_FINAL_WIN" - screen_scene_id: "SCENE_FINAL_WIN" - audio_pack_id: "" - actions: - - "ACTION_TRACE_STEP" - - "ACTION_WINNER" - transitions: - - "timer:WIN_DUE->SCENE_MEDIA_MANAGER" - - "serial:BTN_NEXT->SCENE_MEDIA_MANAGER" - - "unlock:UNLOCK->SCENE_MEDIA_MANAGER" - - "action:FORCE_WIN_ETAPE2->SCENE_MEDIA_MANAGER" - - "serial:FORCE_WIN_ETAPE2->SCENE_MEDIA_MANAGER" - led_policy: - ws2812_1: on - ws2812_2: on - ws2812_3: on - ws2812_4: on - animation: "blink_all_random" - brightness: "100%" - rgb: "random_color" - -current_firmware_snapshot: - source_to_update_files: - - "docs/protocols/story_specs/scenarios/default_unlock_win_etape2.yaml" - - "data/story/scenarios/DEFAULT.json" diff --git a/scenario-ai-coherence/zacus_conversation_bundle_v3/scenario_promptable_template.yaml b/scenario-ai-coherence/zacus_conversation_bundle_v3/scenario_promptable_template.yaml deleted file mode 100644 index acf7729..0000000 --- a/scenario-ai-coherence/zacus_conversation_bundle_v3/scenario_promptable_template.yaml +++ /dev/null @@ -1,105 +0,0 @@ -# Scenario reel - template lisible + promptable. -# -# Comment l'utiliser: -# 1) Edite uniquement la section `prompt_input`. -# 2) Laisse `current_firmware_snapshot` comme reference de l'etat actuel code. -# 3) Envoie ce fichier a Codex: je convertis ensuite vers le YAML canonique + JSON runtime. -# -# NOTE (conversation): -# - Prototype: U-SON -# - Etape 1 (LA_DETECTOR): fréquence audio LA 440 Hz -# - Etape 2 (LEFOU_DETECTOR): puzzle piano-alphabet → jouer "LEFOU" -# * Lettres collées en ordre aléatoire sur les touches blanches -# * A est placé sur la touche correspondant au LA 440 Hz (ancre) -# - QR final: payload "WIN", caché derrière le portrait dans la Salle des Archives - -prompt_input: - meta: - request_name: "A_COMPLETER" - owner: "A_COMPLETER" - board_target: "freenove_esp32s3" - objective: "U-SON: Acte1 LA440 (~45min) -> Acte2 Zone4 piano 'LEFOU' (~60min) -> QR WIN -> Media Manager" - - boot_policy: - startup_mode: "story" # story | media_manager - persist_after_validation: true - rollback_command_required: true - - qr_rule: - enabled: true - scene_id: "SCENE_QR_DETECTOR" - expected_payload: "WIN" - match_mode: "exact" # exact | prefix | contains - case_insensitive: true - success_event: "UNLOCK_QR" - failure_event: "QR_INVALID" - - media_hub: - enabled: true - hub_scene_id: "SCENE_MEDIA_MANAGER" - entries: - - "SCENE_PHOTO_MANAGER" - - "SCENE_MP3_PLAYER" - - "SCENE_READY" - - led_policy: - strict_rgb: true - defaults: - ws2812: 1 - led_auto: 1 - rgb: "18/45/95" - scene_overrides: - - scene_id: "SCENE_LA_DETECTOR" - rgb: "dynamic_tuner_or_off" - - custom_steps: - # Ajoute, retire, ou reordonne des steps ici. - - "A_COMPLETER" - - serial_test_plan: - - "SC_LOAD DEFAULT" - - "SCENE_GOTO" - - "QR_SIM WIN" - - "SC_EVENT UNLOCK_QR" - - "BOOT_MODE_STATUS" - - "RESET" - - acceptance_criteria: - - "Pas de PANIC|ASSERT|ABORT|REBOOT|rst:" - - "Transitions scene avec ACK ... ok=1" - - "Ownership camera/mic/amp coherent" - - "LED WS2812 conformes policy + RGB" - - "Boot mode media_manager persistant apres QR valide" - - notes: - - "Acte 1: LA 440 Hz (stabilité) ~45 minutes." - - "Acte 2: Zone 4 piano-alphabet (LEFOU) + Archives (QR WIN derrière portrait) ~60 minutes." - - "Prototype: U-SON." - - "Ajouter ici les exceptions ou aliases scene." - - scenario: - id: "DEFAULT" - version: 2 - initial_step: "STEP_U_SON_PROTO" - app_bindings: - - "APP_AUDIO" - - "APP_SCREEN" - - "APP_GATE" - - "APP_WIFI" - - "APP_ESPNOW" - - "APP_SONAR" - - "APP_SD" - - "APP_CAMERA" - - "APP_LED" - - "APP_SERIAL" - - "APP_TIMER" - - "APP_UNLOCK" - - "APP_QR" - - "APP_INPUT" - - "APP_LOG" - - "APP_ACTION" - -current_firmware_snapshot: - source_to_update_files: - - "docs/protocols/story_specs/scenarios/default_unlock_win_etape2.yaml" - - "data/story/scenarios/DEFAULT.json" diff --git a/scenario-ai-coherence/zacus_conversation_bundle_v3/scenario_runtime.json b/scenario-ai-coherence/zacus_conversation_bundle_v3/scenario_runtime.json deleted file mode 100644 index 14f3c95..0000000 --- a/scenario-ai-coherence/zacus_conversation_bundle_v3/scenario_runtime.json +++ /dev/null @@ -1,434 +0,0 @@ -{ - "scenario": { - "id": "DEFAULT", - "version": 2, - "initial_step": "STEP_U_SON_PROTO", - "app_bindings": [ - "APP_AUDIO", - "APP_SCREEN", - "APP_GATE", - "APP_WIFI", - "APP_ESPNOW", - "APP_SONAR", - "APP_SD", - "APP_CAMERA", - "APP_LED", - "APP_SERIAL", - "APP_TIMER", - "APP_UNLOCK", - "APP_QR", - "APP_INPUT", - "APP_LOG", - "APP_ACTION" - ] - }, - "boot_policy": { - "startup_mode": "story", - "persist_after_validation": true, - "rollback_command_required": true - }, - "qr_rule": { - "enabled": true, - "scene_id": "SCENE_QR_DETECTOR", - "expected_payload": "WIN", - "match_mode": "exact", - "case_insensitive": true, - "success_event": "UNLOCK_QR", - "failure_event": "QR_INVALID", - "timeout_seconds": 30, - "timeout_event": "QR_TIMEOUT" - }, - "media_hub": { - "enabled": true, - "hub_scene_id": "SCENE_MEDIA_MANAGER", - "entries": [ - "SCENE_PHOTO_MANAGER", - "SCENE_MP3_PLAYER", - "SCENE_READY" - ] - }, - "led_policy": { - "strict_rgb": true, - "defaults": { - "ws2812": 1, - "led_auto": 1, - "rgb": "18/45/95" - }, - "scene_overrides": [ - { - "scene_id": "SCENE_LA_DETECTOR", - "rgb": "dynamic_tuner_or_off" - } - ] - }, - "narrative_meta": { - "prototype": "U-SON", - "act_durations_minutes": { - "act_1": 45, - "act_2": 60 - }, - "zone4_piano": { - "code_word": "LEFOU", - "letters_random_order": true, - "anchor": "A on LA 440 Hz" - }, - "qr_location": "Derriere le portrait (Salle des Archives)" - }, - "steps_runtime_order": [ - { - "step_id": "STEP_U_SON_PROTO", - "screen_scene_id": "SCENE_U_SON_PROTO", - "audio_pack_id": "PACK_BOOT_RADIO", - "actions": [ - "ACTION_TRACE_STEP", - "ACTION_HW_LED_ALERT" - ], - "transitions": [ - { - "channel": "audio_done", - "event": "loop", - "target": "STEP_U_SON_PROTO" - }, - { - "channel": "BTN", - "event": "ANY", - "target": "STEP_LA_DETECTOR" - }, - { - "channel": "serial", - "event": "FORCE_ETAPE2", - "target": "STEP_LA_DETECTOR" - } - ], - "led_policy": { - "ws2812_1": "on", - "ws2812_2": "on", - "ws2812_3": "on", - "ws2812_4": "on", - "animation": "random_one_blink", - "brightness": "random_bright", - "rgb": "random_color" - } - }, - { - "step_id": "STEP_LA_DETECTOR", - "screen_scene_id": "SCENE_LA_DETECTOR", - "audio_pack_id": "", - "actions": [ - "ACTION_TRACE_STEP", - "ACTION_QUEUE_SONAR" - ], - "transitions": [ - { - "channel": "timer", - "event": "ETAPE2_DUE", - "target": "STEP_U_SON_PROTO" - }, - { - "channel": "serial", - "event": "BTN_NEXT", - "target": "STEP_RTC_ESP_ETAPE1" - }, - { - "channel": "unlock", - "event": "UNLOCK", - "target": "STEP_RTC_ESP_ETAPE1" - }, - { - "channel": "action", - "event": "ACTION_FORCE_ETAPE2", - "target": "STEP_RTC_ESP_ETAPE1" - }, - { - "channel": "serial", - "event": "FORCE_WIN_ETAPE1", - "target": "STEP_RTC_ESP_ETAPE1" - } - ], - "led_policy": { - "ws2812_1": "on", - "ws2812_2": "on", - "ws2812_3": "on", - "ws2812_4": "on", - "animation": "dynamic_tuner", - "brightness": "100%", - "rgb": "random_color" - } - }, - { - "step_id": "STEP_RTC_ESP_ETAPE1", - "screen_scene_id": "SCENE_WIN_ETAPE1", - "audio_pack_id": "PACK_CONFIRM_WIN_ETAPE1", - "actions": [ - "ACTION_TRACE_STEP", - "ACTION_HW_LED_ALERT", - "ACTION_ESP_NOW_SEND_ETAPE1", - "ACTION_QUEUE_SONAR" - ], - "transitions": [ - { - "channel": "esp_now", - "event": "ACK_WIN1", - "target": "STEP_WIN_ETAPE1" - }, - { - "channel": "serial", - "event": "FORCE_DONE", - "target": "STEP_WIN_ETAPE1" - } - ], - "led_policy": { - "ws2812_1": "on", - "ws2812_2": "off", - "ws2812_3": "off", - "ws2812_4": "on", - "animation": "breathing", - "brightness": "random_bright", - "rgb": "random_color" - } - }, - { - "step_id": "STEP_WIN_ETAPE1", - "screen_scene_id": "SCENE_WIN_ETAPE1", - "audio_pack_id": "PACK_WIN", - "actions": [ - "ACTION_TRACE_STEP", - "ACTION_HW_LED_ALERT" - ], - "transitions": [ - { - "channel": "serial", - "event": "BTN_NEXT", - "target": "STEP_WARNING" - }, - { - "channel": "serial", - "event": "FORCE_DONE", - "target": "STEP_WARNING" - }, - { - "channel": "esp_now", - "event": "ACK_WARNING", - "target": "STEP_WARNING" - } - ], - "led_policy": { - "ws2812_1": "on", - "ws2812_2": "off", - "ws2812_3": "off", - "ws2812_4": "on", - "animation": "K2000", - "brightness": "K2000", - "rgb": "red" - } - }, - { - "step_id": "STEP_WARNING", - "screen_scene_id": "SCENE_WARNING", - "audio_pack_id": "PACK_BOOT_RADIO", - "actions": [ - "ACTION_TRACE_STEP", - "ACTION_HW_LED_ALERT" - ], - "transitions": [ - { - "channel": "audio_done", - "event": "loop", - "target": "STEP_WARNING" - }, - { - "channel": "BTN", - "event": "ANY", - "target": "STEP_LEFOU_DETECTOR" - }, - { - "channel": "serial", - "event": "FORCE_ETAPE2", - "target": "STEP_LEFOU_DETECTOR" - } - ], - "led_policy": { - "ws2812_1": "on", - "ws2812_2": "on", - "ws2812_3": "on", - "ws2812_4": "on", - "animation": "blink_all", - "brightness": "100%", - "rgb": "red" - } - }, - { - "step_id": "STEP_LEFOU_DETECTOR", - "screen_scene_id": "SCENE_LEFOU_DETECTOR", - "audio_pack_id": "", - "actions": [ - "ACTION_TRACE_STEP", - "ACTION_QUEUE_SONAR" - ], - "transitions": [ - { - "channel": "timer", - "event": "ETAPE2_DUE", - "target": "STEP_WARNING" - }, - { - "channel": "serial", - "event": "BTN_NEXT", - "target": "STEP_RTC_ESP_ETAPE2" - }, - { - "channel": "unlock", - "event": "UNLOCK", - "target": "STEP_RTC_ESP_ETAPE2" - }, - { - "channel": "action", - "event": "ACTION_FORCE_ETAPE2", - "target": "STEP_RTC_ESP_ETAPE2" - }, - { - "channel": "serial", - "event": "FORCE_WIN_ETAPE2", - "target": "STEP_RTC_ESP_ETAPE2" - } - ], - "led_policy": { - "ws2812_1": "on", - "ws2812_2": "on", - "ws2812_3": "on", - "ws2812_4": "on", - "animation": "dynamic_tuner", - "brightness": "100%", - "rgb": "random_color" - } - }, - { - "step_id": "STEP_RTC_ESP_ETAPE2", - "screen_scene_id": "SCENE_WIN_ETAPE2", - "audio_pack_id": "PACK_CONFIRM_WIN_ETAPE2", - "actions": [ - "ACTION_TRACE_STEP", - "ACTION_HW_LED_ALERT", - "ACTION_ESP_NOW_SEND_ETAPE2", - "ACTION_QUEUE_SONAR" - ], - "transitions": [ - { - "channel": "esp_now", - "event": "ACK_WIN2", - "target": "STEP_QR_DETECTOR" - }, - { - "channel": "serial", - "event": "FORCE_DONE", - "target": "STEP_QR_DETECTOR" - } - ], - "led_policy": { - "ws2812_1": "on", - "ws2812_2": "off", - "ws2812_3": "off", - "ws2812_4": "on", - "animation": "breathing", - "brightness": "random_bright", - "rgb": "random_color" - } - }, - { - "step_id": "STEP_QR_DETECTOR", - "screen_scene_id": "SCENE_QR_DETECTOR", - "audio_pack_id": "", - "actions": [ - "ACTION_TRACE_STEP", - "ACTION_QR_CODE_SCANNER_START", - "ACTION_QR_TIMEOUT_30S" - ], - "transitions": [ - { - "channel": "timer", - "event": "ETAPE2_DUE", - "target": "STEP_RTC_ESP_ETAPE2" - }, - { - "channel": "event", - "event": "QR_TIMEOUT", - "target": "STEP_RTC_ESP_ETAPE2" - }, - { - "channel": "serial", - "event": "BTN_NEXT", - "target": "STEP_FINAL_WIN" - }, - { - "channel": "unlock", - "event": "UNLOCK_QR", - "target": "STEP_FINAL_WIN" - }, - { - "channel": "action", - "event": "ACTION_FORCE_ETAPE2", - "target": "STEP_FINAL_WIN" - }, - { - "channel": "serial", - "event": "FORCE_WIN_ETAPE2", - "target": "STEP_FINAL_WIN" - } - ], - "led_policy": { - "ws2812_1": "on", - "ws2812_2": "on", - "ws2812_3": "on", - "ws2812_4": "on", - "animation": "bargraph_qr_trigger", - "brightness": "bargraph", - "rgb": "bargraph_red_to_green" - } - }, - { - "step_id": "STEP_FINAL_WIN", - "screen_scene_id": "SCENE_FINAL_WIN", - "audio_pack_id": "", - "actions": [ - "ACTION_TRACE_STEP", - "ACTION_WINNER" - ], - "transitions": [ - { - "channel": "timer", - "event": "WIN_DUE", - "target": "SCENE_MEDIA_MANAGER" - }, - { - "channel": "serial", - "event": "BTN_NEXT", - "target": "SCENE_MEDIA_MANAGER" - }, - { - "channel": "unlock", - "event": "UNLOCK", - "target": "SCENE_MEDIA_MANAGER" - }, - { - "channel": "action", - "event": "FORCE_WIN_ETAPE2", - "target": "SCENE_MEDIA_MANAGER" - }, - { - "channel": "serial", - "event": "FORCE_WIN_ETAPE2", - "target": "SCENE_MEDIA_MANAGER" - } - ], - "led_policy": { - "ws2812_1": "on", - "ws2812_2": "on", - "ws2812_3": "on", - "ws2812_4": "on", - "animation": "blink_all_random", - "brightness": "100%", - "rgb": "random_color" - } - } - ] -} \ No newline at end of file diff --git a/scenario-ai-coherence/zacus_conversation_bundle_v3/zacus_v2.yaml b/scenario-ai-coherence/zacus_conversation_bundle_v3/zacus_v2.yaml deleted file mode 100644 index 066c550..0000000 --- a/scenario-ai-coherence/zacus_conversation_bundle_v3/zacus_v2.yaml +++ /dev/null @@ -1,172 +0,0 @@ -id: zacus_v2 -version: 3 -revision: 1 -title: "Le mystère du Professeur Zacus — Version Réelle (U-SON, piano LEFOU, QR WIN)" -theme: "Enquête scientifique + stabilisation audio + épreuve Zone 4 + déverrouillage final" - -players: - min: 6 - max: 14 - -ages: "6–14 ans (9–11 recommandés)" - -duration: - act_1_minutes: 45 - act_2_minutes: 60 - total_minutes: 105 - -firmware: - board_target: freenove_esp32s3 - engine: story_engine_v2 - runtime_scenario_id: "DEFAULT" - - boot_policy: - startup_mode: story - persist_after_validation: true - rollback_command_required: true - after_success_boot: media_manager - - qr_rule: - enabled: true - scene_id: "SCENE_QR_DETECTOR" - expected_payload: "WIN" - match_mode: exact - case_insensitive: true - success_event: "UNLOCK_QR" - failure_event: "QR_INVALID" - timeout_seconds: 30 - timeout_event: "QR_TIMEOUT" - - media_hub: - enabled: true - hub_scene_id: "SCENE_MEDIA_MANAGER" - entries: - - "SCENE_PHOTO_MANAGER" - - "SCENE_MP3_PLAYER" - - "SCENE_READY" - -canon: - prototype: "U-SON" - introduction: > - Le Professeur Zacus a disparu après avoir déclenché une alerte cryptée. - Le prototype U-SON “dérive”: les signaux deviennent instables. - Pour protéger U-SON, l’équipe doit: - (1) stabiliser une référence scientifique (LA 440 Hz), - (2) passer la règle de Zone 4 (installation de l’Électron Fou) via un code piano-alphabet, - (3) récupérer la clé finale (QR “WIN”) cachée aux Archives. - stakes: > - Le vrai test n’est pas la vitesse: c’est la coopération, la précision et le calme. - reveal_finale: > - Zacus réapparaît: c’était un test d’éthique. - U-SON ne doit pas devenir un objet de panique. - L’équipe gagne parce qu’elle a fait juste: stabilité, règle, entraide. - lore_truths: - - "Zone 4 = installation personnelle de l’Électron Fou." - - "Piano-alphabet brouillé: lettres collées en ordre aléatoire sur touches blanches." - - "Ancre: A est placé sur la touche correspondant au LA 440 Hz." - -stations: - - id: STATION_ONDES - act: 1 - name: "Atelier des Ondes" - focus: "Stabiliser LA 440 Hz pour recaler U-SON." - firmware_anchor_step: "STEP_LA_DETECTOR" - - - id: STATION_ZONE4_PIANO - act: 2 - name: "Zone 4 — Studio de Résonance (Piano Alphabet brouillé)" - focus: "Trouver et jouer le code LEFOU (L-E-F-O-U) via lettres sur touches blanches." - firmware_anchor_step: "STEP_LEFOU_DETECTOR" - clue_soft: "En Zone 4, les lettres comptent plus que les notes. A est sur le LA 440." - clue_hard: "Le code est le nom du propriétaire: LEFOU." - - - id: STATION_ARCHIVES_QR - act: 2 - name: "Salle des Archives" - focus: "Trouver et scanner la clé finale." - firmware_anchor_step: "STEP_QR_DETECTOR" - qr_location_real: "Derrière le portrait (cadre) dans la Salle des Archives." - -puzzles: - - id: PUZZLE_LA_440 - act: 1 - type: "audio / stabilisation" - objective: "Produire un LA 440 Hz stable." - firmware_step: "STEP_LA_DETECTOR" - - - id: PUZZLE_PIANO_ALPHABET_5 - act: 2 - type: "piano / code lettres (mapping brouillé)" - objective: "Jouer 5 touches correspondant aux lettres du code." - firmware_step: "STEP_LEFOU_DETECTOR" - mapping_rule_real: > - Les 26 lettres A–Z sont collées sur des touches blanches dans un ordre aléatoire. - Une seule ancre est vraie: A est placé sur le LA 440 Hz. - code_word_5_letters: "LEFOU" - sequence_letters: ["L","E","F","O","U"] - hint_progression: - soft: "A est sur le LA. Cherchez les lettres, pas les notes." - medium: "Le mot est un nom (propriétaire Zone 4)." - hard: "Jouez L-E-F-O-U." - - - id: PUZZLE_QR_WIN - act: 2 - type: "recherche / scan" - objective: "Scanner le QR final WIN." - firmware_step: "STEP_QR_DETECTOR" - qr_payload: "WIN" - location: "Derrière le portrait aux Archives" - -acts: - - act: 1 - title: "Acte 1 — Stabiliser U-SON (LA 440) (≈45 min)" - goal: "Valider Étape 1 via LA 440 Hz." - - act: 2 - title: "Acte 2 — Zone 4 (piano LEFOU) + Archives (QR WIN) (≈60 min)" - goal: "Valider Étape 2, puis scanner QR WIN derrière le portrait." - -audio: - packs: - - pack_id: PACK_BOOT_RADIO - tracks: - - track_id: boot_intro - script_fr: > - Équipe Zacus… ici le Professeur Zacus. - Le prototype U-SON dérive. Les capteurs ne sont plus fiables. - Pour stabiliser U-SON, il vous faut une référence : le LA, quatre-cent-quarante hertz. - Rendez-vous à l’Atelier des Ondes. - Gardez votre calme. - tts_prompt_excerpt: > - Voix adulte calme, rassurante, scientifique. Phrases courtes. - Effets: bip début + souffle léger + bandpass radio. - - track_id: warning_to_zone4 - script_fr: > - Alerte. - Prochaine étape : Zone 4. - Les lettres sont brouillées. - Une seule est sûre : A est sur le LA. - Cinq lettres. Cinq touches. - tts_prompt_excerpt: > - Voix plus urgente mais pas anxiogène. - Effets: bips rapides d’alarme, puis radio léger. - - - pack_id: PACK_CONFIRM_WIN_ETAPE1 - tracks: - - track_id: confirm_win1 - script_fr: > - Signal stabilisé. - Étape un validée. - Liaison confirmée. - - - pack_id: PACK_CONFIRM_WIN_ETAPE2 - tracks: - - track_id: confirm_win2_archives - script_fr: > - Étape deux validée. - Rendez-vous aux Archives. - La clé finale est derrière le portrait. - -qr: - payload: "WIN" - location: "Derrière le portrait dans la Salle des Archives" - lead_in_clue: "Regarde là où Zacus surveille toujours."