# `lang/` — Représentation linguistique interne (étape A0)

But : **séparer ce que la personne VEUT dire** (l'intention) **de la façon dont
le français le réalise** (préposition, ordre des mots, accord, pronoms clitiques).
C'est la « prise électrique » : on la définit AVANT de brancher un réalisateur
(jsRealB, moteur maison…). Voir la reco A0 → B → A1.

## Trois couches, jamais mélangées

1. **Rôle sémantique** — `agent`, `theme`, `recipient`, `goal`, `topic`…
   (ce que l'argument EST pour le verbe).
2. **Fonction syntaxique** — `subject`, `direct_object`, `indirect_object`, `oblique`
   (comment le français le construit) + la **préposition** éventuelle (`à`, `de`).
3. **Réalisation** — calculée par le réalisateur, jamais écrite à la main
   (élision, « le lui », accords, impératif « donne-le-moi »).

Plus deux méta-champs sur chaque fiche lexicale : **la source** de l'information
et **la validation humaine** (`reviewStatus`).

## Fichiers

- `intent.schema.json` — structure d'une intention de communication.
- `lexeme.schema.json` — structure d'une fiche lexicale (verbe + valence).
- `lexicon.core.json` — **noyau éditorial** de départ (les verbes du corpus de
  spike). À étendre à 30–50 verbes prioritaires en A1, **à la main puis import
  sourcé** — jamais d'aspiration en vrac.

## Règle de sourcing (licences)

`source` peut être `editorial` (écrit à la main, validé), ou plus tard `lefff`
(CeCILL-C, compatible AGPL, version à figer). **Jamais `dicovalence`** :
CC BY-NC → usage commercial interdit, même couloir qu'ARASAAC. Exclu.

## Où sont les couches dans le code

- L'**upstream** (grille CAA / mode ancres) produit une *intention* conforme à
  `intent.schema.json`.
- Le **réalisateur** transforme l'intention en français. Deux candidats comparés
  dans `../spikes/spike-b/` : jsRealB (Apache 2.0 + données CC BY 4.0) et le
  moteur maison (`grammar.js` + `sentence.js`).
