Le dépôt des textes créé par Yvv sur git.open.us.org (2026-10-21) : séparé du code, pour que la clé du serveur n'écrive jamais dans yvv/decision et que le dépôt se transfère d'un bloc à l'ouverture. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
221 lines
14 KiB
Markdown
221 lines
14 KiB
Markdown
# Chantier 1 — Acte d'engagement Certification
|
||
|
||
> Binôme : **Yvv** (porteur) · **Chiara** (testeuse et codeuse — ses tests d'usage valent
|
||
> contrôles). Branche commune : `chantier/acte-certification`. Ouvert le 2026-10-21.
|
||
> Production : https://decision.librodrome.org
|
||
|
||
## Le besoin, en une phrase
|
||
|
||
La communauté Monnaie libre tient son Acte d'engagement Certification comme un **texte vivant** :
|
||
lisible d'abord, modifiable par article, chaque modification passant par un vote dont le seuil
|
||
suit la formule inertielle de la Ğ1 — sans qu'une coquille demande un vote, sans que deux
|
||
articles contradictoires soient en vigueur ensemble, et avec une publication automatique que
|
||
les applications clientes (Cesium, Ğecko…) peuvent suivre.
|
||
|
||
## Ce que voit la personne
|
||
|
||
1. **Accueil sobre** : « Rendre possible la décision collective » / « en fonction du contexte,
|
||
processus et modalités, boîte à outils », les quatre outils en une ligne chacun, puis la
|
||
connexion. Le menu complet à gauche : Décisions · Docs de référence · Mandats · Protocoles
|
||
(seul Docs de référence est actif).
|
||
2. **Connexion Ğ1** — la même que le forum Monnaie libre (connect.monnaie-libre.fr). En attendant
|
||
l'inscription du client OAuth2, des **liens d'invitation** à usage unique (une personne),
|
||
et des **liens d'équipe** réutilisables jusqu'à une date (chaque ouverture crée sa propre
|
||
identité, jamais administratrice).
|
||
3. **Groupes** : avec une clé Ğ1, on voit Monnaie libre, Axiom, Librodrome et le Groupe local
|
||
Vallée Drôme Crestois — pas l'Atelier du canal. Un groupe et son contenu ne s'ouvrent qu'à
|
||
ses membres ; Monnaie libre s'ouvre à tout membre de la toile de confiance, les autres
|
||
groupes sur accord dans trustinWallet.
|
||
4. **Le texte en vigueur**, seul, en grand, typographie de lecture (Literata) : au départ le
|
||
Préambule et les deux engagements fondamentaux (Unicité du compte, Réciprocité), marqués
|
||
*seed a minima · 0 vote*. Au survol (ou toujours visibles sur mobile), trois gestes discrets :
|
||
**Le vote** (en cours, inertie, formule, annexes) · **Les propositions** · **Proposer**. Ils
|
||
ouvrent un panneau latéral (une feuille sur mobile) dont l'état vit dans l'URL.
|
||
5. **En dessous**, les propositions en cours — les 30 autres articles du texte source, à zéro
|
||
vote, inertie standard — rangées par section (introduction, fondamental, technique,
|
||
conclusion, annexes, formule, inertie, ordonnancement), les variantes signalées.
|
||
6. **Deux aperçus** : « si les bien cotées passent » et « si tout passe ».
|
||
7. **Trois langues** : fr · en · es, pour l'interface comme pour le texte. Le français fait foi ;
|
||
une traduction devenue ancienne (le français a changé depuis) est signalée.
|
||
|
||
## Les règles
|
||
|
||
### Le seuil — formule inertielle Ğ1
|
||
|
||
```
|
||
R = C + B^W + (M + (1 − M)·(1 − (T/W)^G)) · max(0, T − C)
|
||
```
|
||
|
||
W = électorat (Monnaie libre : taille de la toile, lue sur la chaîne toutes les 6 h ; un groupe
|
||
géré : ses membres), T = votes exprimés, M = majorité, G = gradient, B = 0,1, **C = plancher de
|
||
votants « pour »** (Monnaie libre : **50** ; groupe d'essai : 1). Adoptée si « pour » ≥ ⌈R⌉.
|
||
|
||
| Inertie | M | G |
|
||
|---|---|---|
|
||
| basse | 50 % | 0,1 |
|
||
| standard (au départ, partout) | 50 % | 0,2 |
|
||
| haute | 60 % | 0,4 |
|
||
| maximale | 66 % | 0,6 |
|
||
|
||
Moteur : `crates/ld-engine/src/threshold.rs` (testé : 7224 / 120 votants → 94 voix requises).
|
||
|
||
### Le vote permanent
|
||
|
||
- Toute version d'un article (proposition ou texte en vigueur) se vote à tout moment.
|
||
- Une proposition **remonte en vigueur** dès qu'elle atteint son seuil **et** tient une marge
|
||
(pour − requis) plus large que la version en place. La version déplacée redevient une
|
||
proposition, avec ses votes. Un *seed a minima* a pour marge −C : la première proposition qui
|
||
atteint son seuil le remplace.
|
||
- Retirer un article est une proposition comme une autre (« retirer cet article »).
|
||
- Le balayage tourne à chaque vote et toutes les 5 minutes (la taille de la toile bouge).
|
||
|
||
### L'inertie se vote aussi
|
||
|
||
Chaque article porte son inertie. La changer est une proposition, **votée elle-même à
|
||
l'inertie du cran au-dessus** (« inertie + ») : alourdir ou alléger demande plus que modifier.
|
||
|
||
### Corriger n'est pas voter
|
||
|
||
**Une coquille touche les lettres et les espaces, rien d'autre.** Accents, majuscules, le style
|
||
des apostrophes et des guillemets, un mot collé ou coupé (« latransmission » → « la
|
||
transmission »), ou au plus deux mots mal tapés — chacun un seul glissement de clavier au cœur du
|
||
mot (« certifcation » → « certification »). Tout le reste passe par une proposition : la
|
||
ponctuation, les chiffres, les signes, l'emphase, les formules, les adresses, et tout changement
|
||
de sens.
|
||
|
||
| Geste | Qui | Effet sur les votes |
|
||
|---|---|---|
|
||
| Corriger une **coquille** | tout membre sur un texte de départ ou en vigueur ; l'auteur sur sa proposition | aucun — les votes restent, les traductions restent à jour |
|
||
| Modifier **le fond** d'une proposition | son auteur | nouvelle révision : les votes antérieurs sont « à reconfirmer », les signalements tombent |
|
||
| Modifier le fond d'un texte **en vigueur** ou d'un texte de départ | personne | refusé : on propose une nouvelle version |
|
||
|
||
Pourquoi si strict : six relectures indépendantes ont montré qu'une ponctuation laissée libre
|
||
finit toujours par porter un sens — un signe moins devant un nombre en gras, deux conditions
|
||
d'une liste fusionnées en une, une virgule glissée dans « 50 », une parenthèse déplacée qui
|
||
change la portée d'une exception. La règle est donc construite à l'envers d'une liste noire :
|
||
|
||
- la **forme** du texte (tout ce qui n'est ni lettre latine ni espace, dans l'ordre : ponctuation,
|
||
chiffres de toute écriture, signes, emphase, parenthèses, sosies, marques superposées, autres
|
||
alphabets) ne bouge pas ; une espace à côté d'un chiffre en fait partie (« 1 5 » n'est pas
|
||
« 15 ») ; les apostrophes et guillemets de tous styles comptent pour un même signe ; « lettre
|
||
latine » s'entend de celles du français, de l'anglais et de l'espagnol (les lettres latines
|
||
rares qui imitent un signe, « ǃ » ou « Ʒ », font partie de la forme) ; « espace » s'entend de
|
||
l'espace, de l'insécable et de la fine insécable entre deux mots ; le **saut de ligne** et
|
||
l'**indentation** qui ouvre une ligne font partie de la forme (en Markdown, ils font les
|
||
listes et les paragraphes) ; un titre tient sur une ligne ;
|
||
- les **adresses** (liens, domaines, courriels) et les **identifiants qui contiennent un
|
||
chiffre** (clés publiques, références) sont comparés à l'identique, casse comprise ; le contenu
|
||
entre accents graves aussi ;
|
||
- les espaces ne font que **coller ou couper** des mots, deux au plus, jamais en touchant une
|
||
négation ou une quantité — ni ses morceaux ni le mot entier (« Si non » → « Sinon », « ne
|
||
certifier » → « necertifier », « jamais » → « ja mais », « sur tout » → « surtout » sont du
|
||
fond) —, et jamais déplacer une frontière (« les avoir » → « le savoir » est du fond) ;
|
||
- le **titre** et le **corps** sont jugés chacun pour soi (un titre n'absorbe pas le début du
|
||
corps), puis ensemble (deux mots au plus en tout) ;
|
||
- un **glissement** = une lettre ajoutée, retirée, ou deux voisines inversées, jamais aux deux
|
||
premières ni aux deux dernières lettres (préfixes « valide » → « invalide », terminaisons
|
||
« certifierai » → « certifierais »), jamais une lettre remplacée (« deux » → « dix »), jamais sur
|
||
un mot de négation, de quantité ou de position (ne, jamais, deux, majorité, tous, dessus…) ;
|
||
- chaque correction est mesurée contre le **texte voté**, jamais contre la correction
|
||
précédente : les glissements ne s'additionnent pas ;
|
||
- les caractères invisibles (tout l'ensemble Unicode des caractères ignorables : inversion du
|
||
sens d'écriture, largeur nulle, trait d'union conditionnel, sélecteurs de variante,
|
||
étiquettes… ; et les caractères de contrôle autres que saut de ligne et tabulation) sont
|
||
refusés partout où l'on écrit ;
|
||
- une correction ne s'écrit que sur le texte qui a été jugé : si le texte est entré en vigueur
|
||
ou a changé entre-temps, c'est un conflit (« recharge, puis recommence »).
|
||
|
||
Moteur : `crates/ld-engine/src/edit.rs` ; règle d'écriture : `crates/ld-server/src/proposals.rs`.
|
||
|
||
### Deux articles qui se contredisent
|
||
|
||
Tout membre peut **signaler une contradiction** entre deux propositions, motif à l'appui. Tant
|
||
que le signalement tient, celle des deux qui n'est pas en vigueur **ne peut pas entrer en
|
||
vigueur**. Il se lève par son auteur (ou un administrateur), ou tombe quand la proposition
|
||
signalée est révisée sur le fond.
|
||
|
||
### Une décision par proposition
|
||
|
||
L'éditeur a un **assistant à règles** (pas d'IA pour l'instant ; plus tard, une IA locale, sans
|
||
abonnement) : il repère un texte qui porte plusieurs décisions et propose de le **découper en
|
||
brouillons**, signale une proposition très proche d'une existante, et un texte long. Moteur :
|
||
`crates/ld-engine/src/assist.rs`.
|
||
|
||
### Brouillon → proposition
|
||
|
||
On écrit en brouillon (libre, invisible des autres), on soumet ; la proposition est alors
|
||
ouverte au vote. Son auteur peut la retirer.
|
||
|
||
### Publication
|
||
|
||
Chaque entrée en vigueur (et la publication initiale) passe par une file d'envoi : le serveur
|
||
écrit `fr.md`, `en.md`, `es.md` (front matter : document, langue, source, mise à jour ; les
|
||
traductions marquées éditoriales) et `document.json`, commit et pousse sur
|
||
`git.open.us.org/yvv/decision-depot-textes-reference`, chemin `monnaie-libre/acte-engagement-certification/`.
|
||
Échec → nouvel essai avec délai croissant. La clé de publication est générée par le serveur ;
|
||
sa partie publique s'affiche dans trustinWallet, à ajouter comme clé de déploiement (écriture)
|
||
du dépôt. Le groupe d'essai ne publie jamais.
|
||
|
||
### Accès — trustinWallet
|
||
|
||
Tout le monde connecté peut tout faire dans les groupes qu'il ouvre (lire, proposer, voter,
|
||
corriger, signaler) **sauf la gestion des accès**, réservée aux administrateurs de trustinWallet
|
||
(`/acces`) : membres des groupes, invitations, administrateurs, retours, clé de publication.
|
||
Le nom trustinWallet remplace trustWallet (déjà pris). Règles : `crates/trustin-access`.
|
||
|
||
**Une personne, une voix.** Dans Monnaie libre, dont l'électorat W est la toile de confiance,
|
||
**seuls les membres de la toile votent** (connexion Ğ1). Une identité d'invitation y lit,
|
||
propose, corrige et signale, mais ne vote pas : sinon la même personne, invitée puis connectée
|
||
avec sa clé, voterait deux fois. Dans les groupes gérés (essai, Axiom…), tout membre vote.
|
||
|
||
## Le groupe d'essai
|
||
|
||
Caché, plancher C = 1, sans publication : on y éprouve tout (adoption, coquilles, découpage)
|
||
sans toucher au texte de la communauté. Chiara et Yvv en sont membres.
|
||
|
||
## Décisions prises (2026-10-21, avec Yvv)
|
||
|
||
| Question | Décision |
|
||
|---|---|
|
||
| Stack | Rust (serveur, moteur) + Svelte (interface), pour la durée, la performance, la modularité |
|
||
| Domaine | le produit à la racine `decision.librodrome.org` ; la maquette sur `maquette.decision.librodrome.org` |
|
||
| Connexion | client OAuth2 de connect.monnaie-libre.fr (demande à poka) ; liens d'invitation en attendant |
|
||
| Dépôt des textes | `git.open.us.org/yvv/decision-depot-textes-reference` pour l'instant (2026-10-21) ; puis un dépôt pour l'ouverture, par transfert, et le dépôt officiel pour les textes en vigueur |
|
||
| Garde-fou du vote permanent | nombre minimal de votants « pour » (C) |
|
||
| Langues | fr, en, es ; le français est voté, les traductions sont éditoriales |
|
||
| Chiara | testeuse et codeuse |
|
||
| Assistant | à règles d'abord ; IA locale plus tard, sans dépendance d'abonnement |
|
||
|
||
Les raisons longues sont dans `docs/adr/`.
|
||
|
||
## Limites connues (assumées pour ce premier chantier)
|
||
|
||
- Le droit de vote se vérifie **au moment du vote** : un membre sorti de la toile, ou dont
|
||
l'accès est révoqué, garde les voix déjà exprimées.
|
||
- Dans un groupe géré (essai, Axiom…), une même personne admise sous une identité d'invitation
|
||
**et** sous sa clé Ğ1 aurait deux voix : c'est à l'administration de n'en admettre qu'une.
|
||
- Un administrateur peut créer un nouveau lien pour une identité d'invitation existante
|
||
(pour la dépanner) — jamais pour une identité Ğ1.
|
||
- Une identité d'invitation peut porter le nom d'un membre Ğ1 qui ne s'est pas encore
|
||
connecté (la connexion Ğ1 ne vérifie pas les noms) : la mention « sur invitation » à côté de
|
||
chaque auteur qui n'est pas venu avec sa clé Ğ1 les distingue.
|
||
- Des accents ou une ponctuation qui portent du sens restent des coquilles (« ou » / « où »,
|
||
« a » / « à », une virgule autour d'une relative) : le diff de chaque correction est visible
|
||
dans l'historique de l'article.
|
||
- Les traductions (en, es) sont éditoriales : tout membre les corrige sans vote, et elles sont
|
||
republiées — le français fait foi.
|
||
|
||
## Questions ouvertes (à Yvv)
|
||
|
||
- **Licence** du code — non choisie.
|
||
- **Texte « Paramètres par défaut » du seed** (F1.2) : il annonce C = 0 et une durée de 30 jours,
|
||
alors que le vote est permanent avec C = 50. À reformuler par proposition (c'est leur rôle),
|
||
ou à corriger dans le seed avant la première publication si c'est une erreur de transcription.
|
||
- Anglais : l'interface est en anglais américain, le seed en anglais britannique.
|
||
|
||
## Ce qui reste après la livraison
|
||
|
||
- L'inscription du client OAuth2 (poka) : `DEMANDE-CONNECT.md`, puis les deux secrets dans la CI.
|
||
- Les retours de Chiara → contrôles → corrections, sur la branche du chantier.
|
||
- Ensuite : chantier 2, l'Acte d'engagement forgeron (qualification d'une compétence).
|