Same directives as the CE1 chapter: 4 rules with a substitution test
each, 8 multiple-choice + 4 sentence corrections + 3 dictées per rule
(draft), 3 missions per rule, Piper audio for the 12 dictées.
21 missions don't fit on one map, so the world map now shows the
missions of the profile's school level (derived from the rule's level,
no data-format change), with a button letting a CE2 profile revisit the
CE1 map. Mission-position guard test now checks each level separately.
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
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>
Only 1 existed, below the prompt-lancement.md minimum of 3 per
chapter. Adds difficulty 2 (feminine singular) and difficulty 3
(feminine plural, noun and adjective separated by a complement,
mirroring points 18/23). Audio generated with the Piper voice
(make generate-dictation-audio), credited in assets/CREDITS.md.
With this, regle_accord_adjectif now meets prompt-lancement.md's
minimum content volume: 8 multiple-choice, 4 sentence corrections,
3 dictées.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Only 2 existed, below the prompt-lancement.md minimum of 8 per rule.
Adds 4 at difficulty 1 (plural determiner visible), 2 at difficulty 2
(predicate adjective, no determiner cue), 2 at difficulty 3 (noun and
adjective separated by a complement, mirroring the point 18 sentence
corrections). Covers all four gender/number combinations across two
adjectives. All draft, pending human review.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Only one sentence_correction exercise existed for this rule, below the
prompt-lancement.md minimum (4 per rule, spread across difficulty
levels) and the direct cause of the content repetition noted in
decisions.md point 17.
Adds difficulty 1 (number agreement), 2 (gender agreement) and 3
(gender+number, noun and adjective separated by other words),
covering both agreement axes across all three difficulty tiers. All
draft, per CLAUDE.md pending human review.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Introduces a generic JSON-Schema-subset validator in GDScript
(scripts/data/schema_validator.gd) used both by `make validate-data`
and, later, by ExerciseEngine at load time, plus semantic_checks.gd
for cross-field constraints a schema can't express (answer index
bounds, at least one faulty token in sentence correction, word count
matching between a dictation's target_text and its annotations).
Schemas cover rule, exercise (dispatched per type: multiple_choice,
sentence_correction), dictation, curriculum, and save (save.schema.json
is not yet wired into validate-data; saves live in user://, handled
at the Profiles/Saves step).
First draft content for the CE1 "accord_adjectif" rule (one rule, two
multiple-choice exercises, one sentence correction, one dictation,
one curriculum entry) exercises the full pipeline end to end and
seeds docs/review/content-review.md, regenerated by the new
tools/generate_content_review.py (`make content-review`).
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Pins Godot 4.6.3-stable and GUT 9.6.0 (9.6.1+ reference
AccessibilityServer, unavailable in 4.6.3) via tools/setup.sh. Wires
make check (gdlint + gdformat config for 4-space indent, headless
GUT run, and a JSON well-formedness check ahead of real schema
validation). Seven autoload stubs match the architecture in the
cahier des charges; real logic lands with the following steps.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>