Add regle_pluriel_nom and regle_accord_determinant (CE1)

Extends explicitly beyond the §15 prototype scope (3 missions, one
rule) that prompt-lancement.md says not to exceed without flagging
it — confirmed with the user before implementing (decisions.md,
point 25).

Adds the two remaining CE1 rules for the "accords dans le groupe
nominal" chapter listed in prompt-lancement.md, each with the same
minimum content volume already established for regle_accord_adjectif
(8 multiple-choice, 4 sentence corrections, 3 dictées across the 3
difficulty levels) and 3 missions (one per exercise type, matching
the existing pattern), bringing the map to 9 locations.

world_map.gd is purely data-driven already, so no code change was
needed to support more locations — only its stale "trois lieux"
header comment, corrected. Dictation audio generated with the Piper
voice (make generate-dictation-audio).

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
Denis Defolie
2026-10-11 21:36:04 +02:00
parent 26d588f1bc
commit 1c036658bc
57 changed files with 993 additions and 9 deletions
+1 -3
View File
@@ -5,9 +5,7 @@ Tous les graphismes et sons actuels sont provisoires, crees pour ce projet, sans
| Fichier | Origine | Licence |
|---|---|---|
| `icon.svg` | Forme geometrique simple, creee pour ce projet | AGPL-3.0 (code et assets du depot) |
| `audio/dictations/ce1_accord_adjectif_dictee_01.ogg` | Voix de synthese neuronale generee hors ligne avec Piper (modele `fr_FR-siwis-medium`, entraine sur le corpus SIWIS de l'EPFL), via `tools/generate_dictation_audio.py` | MIT (Piper) ; dataset SIWIS en CC-BY 4.0 (attribution requise) ; fichier genere verse en AGPL-3.0 avec le reste du depot |
| `audio/dictations/ce1_accord_adjectif_dictee_02.ogg` | Idem (voix Piper `fr_FR-siwis-medium`) | Idem |
| `audio/dictations/ce1_accord_adjectif_dictee_03.ogg` | Idem (voix Piper `fr_FR-siwis-medium`) | Idem |
| `audio/dictations/*.ogg` (toutes les dictees) | Voix de synthese neuronale generee hors ligne avec Piper (modele `fr_FR-siwis-medium`, entraine sur le corpus SIWIS de l'EPFL), via `tools/generate_dictation_audio.py` | MIT (Piper) ; dataset SIWIS en CC-BY 4.0 (attribution requise) ; fichiers generes verses en AGPL-3.0 avec le reste du depot |
Chaque nouvelle dictee ajoutee a `data/dictations/` doit avoir son audio genere avec `make generate-dictation-audio`, puis une ligne ajoutee ici. Toutes les voix actuelles sont provisoires (`audio_provisional: true` dans la donnee, badge « voix provisoire » affiche a l'enfant) : a remplacer par une vraie voix humaine avant diffusion.
@@ -0,0 +1,19 @@
[remap]
importer="oggvorbisstr"
type="AudioStreamOggVorbis"
uid="uid://xmpj5b2uej6l"
path="res://.godot/imported/ce1_accord_determinant_dictee_01.ogg-47c1364a3c83534f6b9c34a204aa3e1d.oggvorbisstr"
[deps]
source_file="res://assets/audio/dictations/ce1_accord_determinant_dictee_01.ogg"
dest_files=["res://.godot/imported/ce1_accord_determinant_dictee_01.ogg-47c1364a3c83534f6b9c34a204aa3e1d.oggvorbisstr"]
[params]
loop=false
loop_offset=0
bpm=0
beat_count=0
bar_beats=4
@@ -0,0 +1,19 @@
[remap]
importer="oggvorbisstr"
type="AudioStreamOggVorbis"
uid="uid://xiref83lks3o"
path="res://.godot/imported/ce1_accord_determinant_dictee_02.ogg-35ec03bc67ca7bddb2db46f8763ef5b9.oggvorbisstr"
[deps]
source_file="res://assets/audio/dictations/ce1_accord_determinant_dictee_02.ogg"
dest_files=["res://.godot/imported/ce1_accord_determinant_dictee_02.ogg-35ec03bc67ca7bddb2db46f8763ef5b9.oggvorbisstr"]
[params]
loop=false
loop_offset=0
bpm=0
beat_count=0
bar_beats=4
@@ -0,0 +1,19 @@
[remap]
importer="oggvorbisstr"
type="AudioStreamOggVorbis"
uid="uid://chhy2c0fhp2mc"
path="res://.godot/imported/ce1_accord_determinant_dictee_03.ogg-4b09ab70b613e4162faee4b32eabf794.oggvorbisstr"
[deps]
source_file="res://assets/audio/dictations/ce1_accord_determinant_dictee_03.ogg"
dest_files=["res://.godot/imported/ce1_accord_determinant_dictee_03.ogg-4b09ab70b613e4162faee4b32eabf794.oggvorbisstr"]
[params]
loop=false
loop_offset=0
bpm=0
beat_count=0
bar_beats=4
@@ -0,0 +1,19 @@
[remap]
importer="oggvorbisstr"
type="AudioStreamOggVorbis"
uid="uid://dex7jgt5d8h5e"
path="res://.godot/imported/ce1_pluriel_nom_dictee_01.ogg-d6abb577e290548c3eeef95255d0e3b5.oggvorbisstr"
[deps]
source_file="res://assets/audio/dictations/ce1_pluriel_nom_dictee_01.ogg"
dest_files=["res://.godot/imported/ce1_pluriel_nom_dictee_01.ogg-d6abb577e290548c3eeef95255d0e3b5.oggvorbisstr"]
[params]
loop=false
loop_offset=0
bpm=0
beat_count=0
bar_beats=4
@@ -0,0 +1,19 @@
[remap]
importer="oggvorbisstr"
type="AudioStreamOggVorbis"
uid="uid://oc6rdjac3hjn"
path="res://.godot/imported/ce1_pluriel_nom_dictee_02.ogg-b4060318d276b46038ffd375f2e1fbeb.oggvorbisstr"
[deps]
source_file="res://assets/audio/dictations/ce1_pluriel_nom_dictee_02.ogg"
dest_files=["res://.godot/imported/ce1_pluriel_nom_dictee_02.ogg-b4060318d276b46038ffd375f2e1fbeb.oggvorbisstr"]
[params]
loop=false
loop_offset=0
bpm=0
beat_count=0
bar_beats=4
@@ -0,0 +1,19 @@
[remap]
importer="oggvorbisstr"
type="AudioStreamOggVorbis"
uid="uid://bsc15pmxhbncx"
path="res://.godot/imported/ce1_pluriel_nom_dictee_03.ogg-4505c6140e2a079498b6081b5c01d590.oggvorbisstr"
[deps]
source_file="res://assets/audio/dictations/ce1_pluriel_nom_dictee_03.ogg"
dest_files=["res://.godot/imported/ce1_pluriel_nom_dictee_03.ogg-4505c6140e2a079498b6081b5c01d590.oggvorbisstr"]
[params]
loop=false
loop_offset=0
bpm=0
beat_count=0
bar_beats=4