feat(kreyol): ouvrir la relecture et la prononciation aux locuteurs

Amendement de l'ADR 0005 : la relecture ne repose plus sur un relecteur
unique. La porte ne s'abaisse pas — l'ouverture porte sur qui peut
proposer, jamais sur qui peut valider.

La communauté existait déjà
- Lingua Libre compte 456 enregistrements en kréyòl gwadloupéyen, versés
  sur Commons sous licence libre.
- Trois de nos treize noms y figuraient déjà — gouyav, kénèt, zikak — en
  CC BY-SA 4.0 et AVEC EXACTEMENT NOTRE GRAPHIE. Trois entrées sortent du
  doute par corroboration externe, sans que le projet décide quoi que ce
  soit. La question n'était pas qui trancherait, mais d'aller regarder.
- En regard : 0 lexème Wikidata en gcf, 0 étiquette gcf sur les 13 items.

Modèle de données
- orthographe.statut : a_relire | en_discussion | relu. Un doute signalé
  sans question posée est refusé par le validateur — on ne décourage pas
  le lecteur, on l'appelle. 4 entrées en discussion : ake, medisinye,
  lorye-jonn, pom-dlo.
- noms.variantes_gcf : les usages proposés sont conservés avec leur source
  et leur île, jamais écrasés. Une graphie identique au nom principal est
  refusée comme variante : c'est une corroboration, pas un désaccord.
- audio : source, licence, url_description, locuteur crédité, valide.
  check:audio interroge Lingua Libre et trouve seul les prises existantes.

Porte : 14/14 (5 cas ajoutés sur la langue et la prononciation).

Pis-aller assumé : les 4 questions sont rédigées en français. Les écrire
en kréyòl reviendrait à produire du kréyòl non relu au moment même où l'on
reconnaît ne pas savoir le faire. Leur traduction est la première
contribution demandée.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
OKI
2026-07-27 10:40:23 -04:00
co-authored by Claude Opus 5
parent 9e3c176411
commit 4f78321195
26 changed files with 848 additions and 112 deletions
+43 -7
View File
@@ -42,26 +42,45 @@
"gcf": { "type": "string", "minLength": 1, "description": "Nom kréyòl — nom principal de l'entrée." },
"fr": { "type": "string" },
"en": { "type": "string" },
"es": { "type": "string" }
"es": { "type": "string" },
"variantes_gcf": {
"type": "array",
"description": "Autres graphies ou autres noms proposés par des locuteurs. On les garde toutes : une variante n'est pas une erreur, c'est un usage. C'est le matériau de la relecture, pas son résultat.",
"items": {
"type": "object",
"additionalProperties": false,
"required": ["graphie", "source"],
"properties": {
"graphie": { "type": "string", "minLength": 1 },
"source": { "type": "string", "minLength": 2, "description": "Qui la propose : personne, commune, enregistrement, publication." },
"ile": { "enum": ["gp", "mq", "gf", "re", null] },
"note": { "type": ["string", "null"] }
}
}
}
}
},
"orthographe": {
"type": "object",
"additionalProperties": false,
"required": ["norme", "statut", "relu_par"],
"required": ["norme", "statut", "relu_par", "question_ouverte"],
"properties": {
"norme": {
"enum": ["gwadloupeyen"],
"description": "Norme unique du projet (ADR 0005). Ne jamais mélanger avec le matinitjé."
},
"statut": {
"enum": ["a_relire", "relu"],
"description": "Passe à 'relu' uniquement quand un locuteur humain a tranché. Aucun agent ne peut le faire."
"enum": ["a_relire", "en_discussion", "relu"],
"description": "'a_relire' : personne ne s'est prononcé. 'en_discussion' : un doute est identifié et posé publiquement. 'relu' : un locuteur humain nommé a tranché — aucun agent ne peut le faire."
},
"relu_par": {
"type": ["string", "null"],
"description": "Nom du relecteur humain. Obligatoirement non nul quand statut = relu."
},
"question_ouverte": {
"type": ["string", "null"],
"description": "La question posée aux locuteurs, affichée telle quelle dans le jeu et l'encyclopédie. Obligatoire quand statut = en_discussion : on ne signale pas un doute sans dire lequel."
}
}
},
@@ -145,14 +164,31 @@
"audio": {
"type": "object",
"additionalProperties": false,
"required": ["gcf", "locuteur"],
"required": ["gcf", "locuteur", "source", "licence", "url_description", "valide"],
"description": "La prononciation du nom kréyòl. Aucune synthèse vocale (brief §6) : une voix humaine, toujours.",
"properties": {
"gcf": {
"type": ["string", "null"],
"pattern": "^/audio/[a-z0-9-]+\\.opus$",
"description": "Prononciation kréyòl par une voix humaine. Aucune synthèse vocale (brief §6). Null tant que l'enregistrement manque ; le jeu doit se replier en silence."
"description": "Fichier embarqué dans le jeu. Null tant que l'enregistrement manque ; le jeu se replie alors en silence, jamais sur une voix de synthèse."
},
"locuteur": { "type": ["string", "null"] }
"locuteur": {
"type": ["string", "null"],
"description": "Nom ou pseudonyme du locuteur, crédité nominativement. Il conserve ses droits voisins."
},
"source": {
"enum": ["porteur", "lingualibre", "contributeur", null],
"description": "'lingualibre' désigne un enregistrement déjà versé aux communs — à préférer, il sert au-delà de ce jeu."
},
"licence": {
"enum": ["CC0-1.0", "CC-BY-4.0", "CC-BY-SA-4.0", "OKI-CC-BY-SA-4.0", null]
},
"url_description": {
"type": ["string", "null"],
"description": "Page d'origine de l'enregistrement. Obligatoire quand la source n'est pas le porteur."
},
"valide": { "type": "boolean" },
"note": { "type": ["string", "null"] }
}
},