Files
decision/docs/chantiers/acte-certification/CHANTIER.md
T
YvvandClaude Opus 5.5 40ab6e41c5 Lot S, phase 2 : le quorum documenté (ADR 0013, notes dans 0002 et 0007, CHANTIER, CONTROLES, CLAUDE.md)
ADR 0013 : la formule sur T' = max(T, Q), « Ils comptent comme non » dans
threshold::judged_voters, les quorums par cran 12 · 12 · 50 · 50 · 50 (1 dans le
groupe d'essai), le quorum d'un article fixé par l'auteur avant le premier vote
(« un vote existe » : quorum::voted_units, la limite du vote retiré), p0 = 2Q₀/W,
l'amendement 2026-11-03-quorums-par-cran, les nombres, le coût (une voix passe
dans le groupe d'essai ; F1.1 et N1.1 du seed décrivent encore C).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-03 05:15:18 +01:00

32 KiB
Raw Blame History

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 qui se répètent ou se contredisent 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 (revue du 2026-10-30) : « Rendre possible la décision collective », puis le leitmotiv en trois lignes (contexte et cadrage · processus et modalités · boîte à outils), puis directement le choix du groupe (sans session : la connexion). Le pavé des quatre outils accueille dans le groupe choisi, suivi de ce qui y est « En cours ». Le menu complet à gauche : Décisions · Docs de référence (avec le nombre de docs en cours) · Mandats · Protocoles ; seul Docs de référence réagit, les autres s'ouvrent sur leurs « À venir », éteints. Décisions : une ligne par doc en cours, avec le nombre de modules qui restent à voter.
  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, aucun article n'est en vigueur (Yvv, 2026-11-02 ; ADR 0011), et le lecteur le dit : la Raison d'être (texte d'Yvv du 2026-10-30, qui remplace le Préambule : « Derrière une clé il n'y a qu'un seul être humain vivant ; derrière un être humain, il n'y a qu'une seule clé certifiante. ») et les deux engagements fondamentaux (Unicité du compte, Réciprocité) sont des Propositions seed : ouvertes, mises en avant pour lancer le vote, marquées « Proposition seed », au cran 2 ; elles entrent en vigueur comme toute proposition. Le titre du document et l'ordre de chaque section, eux, sont en vigueur sans vote, marqués seed a minima avec leur nombre réel de votes (seed a minima · 0 vote, puis · 1 vote…). Le titre du document est un module (inertie 4) : sous le titre, son état (en vigueur sans vote, ou adopté le…), « traduction à revoir » quand le titre lu est la traduction d'un titre remplacé, et les mêmes gestes : Le vote · Propositions · Proposer un autre titre. Chaque section se termine par l'ordre de ses articles, un module à l'inertie 2 : ses articles numérotés en deux lignes au plus, la liste entière dans son vote, et Proposer un autre ordre — une liste où l'on clique un article puis sa nouvelle place (ou ses flèches, ou au clavier : Entrée le choisit, haut et bas le déplacent), puis « Proposer cet ordre ». Une section d'un seul article n'a pas d'ordre à décider. Au survol (ou toujours visibles sur mobile), trois gestes discrets : Le vote · Les propositions · Proposer. Le vote se déplie sous l'article, façon accordéon (un seul à la fois, l'état dans l'URL : ?vote=) : le niveau d'eau, les totaux pour et contre (jamais qui), le seuil et les voix qui manquent, ton vote et où il en est (enregistré, inscrit sur la chaîne Ğ1, en attente de la chaîne, à reconfirmer, non compté et pourquoi), puis l'inertie et la formule. Les autres gestes ouvrent un panneau latéral (une feuille sur mobile), lui aussi dans l'URL : Panier, Propositions, Proposer, Détails d'une version (coquilles, traductions, objections, historique) et « Réglages de la formule » (W, B, la participation habituelle du groupe et les cinq crans avec leur quorum), atteints depuis l'en-tête du document et depuis chaque vote.
  5. En dessous, les propositions en cours — les 33 articles du texte source, à zéro vote : les trois Propositions seed au cran 2, les 30 autres à l'inertie 3 / 5 — rangées par section (introduction, fondamental, technique, conclusion, annexes, formule, inertie, ordonnancement), une ligne par article : un article qui a plusieurs versions (variantes du seed, propositions rivales) montre leur nombre et la meilleure en tête (niveau d'eau, pour / contre) ; la ligne se déplie sur ses versions, chacune avec son étiquette, son niveau et ses marques, et chacune déplie son vote. Les filtres gardent un article dès qu'une de ses versions passe. Chaque section offre « Voter cette section ». Un ordre proposé s'y lit à la fin de sa section (ses articles dans l'ordre proposé, les déplacés marqués dans son vote), un titre proposé en tête.
  6. Le vote groupé (Yvv, 2026-10-30 : « Je peux voter tout d'un coup, ou une section entière, ou un article avec son titre, ou séparément ») : « Voter en lot » ouvre un panier — pour, contre ou retirer, article par article ; « tout pour » / « tout contre » pour une section ou tout le document, jamais pour un article dont plusieurs versions sont en concurrence (il est montré, on y choisit sa version) ; puis un seul geste : une écriture dans un groupe géré, une transaction sur la chaîne Ğ1 dans Monnaie libre. Le panier tient sur un téléphone et reste le temps de l'onglet. Les modules y sont : le titre du document en premier, l'ordre de chaque section à la fin de celle-ci (« tout pour » une section remplit aussi son ordre).
  7. Deux aperçus : « si les bien cotées passent » et « si tout passe ».
  8. 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.
  9. Messages (lot F, ADR 0010) : au menu, une boîte avec le nombre de non-lus (une pastille sur le bouton du menu en mobile) ; ce qui attend un geste de la personne — une objection à laquelle répondre, à lever ou à réitérer, une correction de coquille à valider —, chaque message avec son objet, son texte, ses gestes et son échéance. Une version retenue par une objection le dit sous l'article, à chacun selon son rôle.

Les règles

Le seuil — formule inertielle Ğ1

T' = max(T, Q)
R  = B^W + (M + (1 − M)·(1 − (T'/W)^G)) · T'

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, Q = quorum (ADR 0013, Yvv 2026-11-02 et 03) : sous Q votants, ceux qui manquent comptent comme « non » (« Ils comptent comme non »). Adoptée si « pour » ≥ ⌈R⌉. Chaque cran a son quorum, le défaut d'un article à ce cran : Monnaie libre 12 · 12 · 50 · 50 · 50, groupe d'essai 1 partout (une voix seule y passe). L'auteur de la première version d'un article (un administrateur pour un texte du seed) peut en fixer un autre, avant le premier vote (« L'auteur, avant le 1er vote ») : de 2 à W, de 1 à W dans le groupe d'essai ; chaque changement est consigné. Il remplace le plancher C (« C suit le cran, mais c'est une proposition par défaut […] c'est plutôt un quorum »).

Cinq crans d'inertie (Yvv, 2026-10-30 ; ADR 0007). Seuls M et G dépendent du cran k : M_k est la majorité à pleine participation, s_k la part de « pour » exigée des votants quand le groupe vote comme d'habitude (participation p̃), et G_k s'en déduit : G_k = ln(1 − (s_k − M_k)/(1 − M_k)) / ln(p̃).

Cran Nom M_k s_k Quorum (Monnaie libre) Au départ
1 très basse 50 % 60 % 12
2 basse 50 % 67 % 12 les trois Propositions seed (Raison d'être, Unicité du compte, Réciprocité), l'ordre des articles de chaque section
3 moyenne 55 % 75 % 50 partout ailleurs
4 haute 60 % 83 % 50 le titre du document
5 très haute 66 % 90 % 50

La participation habituelle p̃ = la médiane des votants des propositions du groupe votées depuis un an (au moins 5), sur W ; avant, la référence 2Q₀/W, Q₀ le quorum de référence du document (vote_floor : 50 dans Monnaie libre, 100 votants ; jamais le quorum d'un article) ; toujours ramenée entre 1 % et 50 %. Mesurée une fois par jour. Le seuil croît avec le cran, la part exigée se relâche vers M quand plus de monde vote, et sous le quorum les votants qui manquent comptent comme « non ».

Avec W = 5 745 et la référence (100 votants), il faut, sans aucun vote, 8, 9, 39, 43 et 46 voix pour (crans 1 à 5) ; à 100 votants, 60, 67, 75, 83 et 90. Au cran 2 (quorum 12), 9 « pour » passent avec 3 « contre » au plus. Avec W = 7 224 et une médiane de 120 votants, il faut, à 120 votants, 72, 81, 90, 100 et 108 ; à 500, 284, 310, 347, 386 et 424 ; à 2 000, 1 068, 1 123, 1 252, 1 389 et 1 537 (ADR 0013).

Moteur : crates/ld-engine/src/threshold.rs (la formule, la règle du quorum dans judged_voters, yes_needed / no_needed ; son cas de référence, lettres données : 7224 / 120 votants, M 50 %, G 0,2, Q 0 → 94 voix) et crates/ld-engine/src/inertia.rs (les crans, leurs quorums, la médiane, la référence, les bornes) ; mesure : crates/ld-server/src/participation.rs ; le quorum d'un article : crates/ld-server/src/quorum.rs (la route, « un vote existe » dans voted_units).

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 (sans vote) a une marge négative : la première proposition qui atteint son seuil le remplace.
  • Les Propositions seed (ADR 0011) ne sont pas en vigueur : la place est vide, la première version de l'article qui atteint son seuil y entre. Yvv remontera leur inertie une fois les textes passés, par un vote : une inertie relevée avant eux leur demanderait davantage.
  • 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, un cran de 1 à 5. La changer est une proposition, votée elle-même au cran actuel de l'article : l'inertie de l'inertie hérite de celle de l'article (Yvv, 2026-10-30 ; elle était votée au cran au-dessus, « inertie + », depuis le 2026-10-21). L'article dit le passé de son inertie : passée de tel cran à tel autre, par un vote ou par le réglage de départ du texte (E1 et E2 relevés de 3 à 4 dans une base existante le 30/10, seulement si aucun vote n'a changé leur inertie : crates/ld-server/src/inertia_amend.rs ; puis I1, E1 et E2 descendus au cran 2 des Propositions seed le 02/11, seulement si personne n'a touché à leur cran : crates/ld-server/src/seed_proposal_amend.rs).

Les modules : l'ordre des articles, le titre du document (ADR 0009)

Revue du 2026-10-30 : « En fin de section, il y a un "module" qui permet de changer l'ordre des "articles". Lui-même à (2), avec une simple liste clipable. » ; « Le titre du doc à (4). » ; le titre d'un article reste voté avec son texte.

  • Un module se vote comme un article : déplié, dans le panier, par la chaîne Ğ1 dans Monnaie libre, avec la marge du texte en place (seed a minima : négative) et son cran. Son inertie se vote aussi. Il compte dans « Décisions » : le seed passe de 33 à 41 modules à voter (33 articles, le titre, l'ordre de 7 sections ; l'ordonnancement n'a qu'un article).
  • L'ordre d'une section est la liste de ses articles qui ont un texte en vigueur ou une version ouverte. Un ordre proposé garde ses votes quand la section change : les articles arrivés depuis se placent à la fin, les articles sortis disparaissent ; s'il redit alors l'ordre en vigueur, il ne peut pas entrer. Ni caduc, ni à reconfirmer : un vote permanent dans une section vivante ne passerait sinon jamais. À l'entrée, les articles de la section prennent ses places dans le nouvel ordre ; rien d'autre ne bouge. Moteur : crates/ld-engine/src/order.rs.
  • Un nouvel article se propose dans une section et se place à sa fin ; sa place se vote ensuite, par l'ordre de la section.
  • Le titre du document : à l'entrée d'un autre titre, le document change de titre en français ; ses traductions restent éditoriales et passent « à revoir » jusqu'à ce qu'on les reprenne. Une coquille du titre se corrige sans vote, par le chemin de toute coquille : celle d'un autre attend l'auteur du titre (un administrateur pour le titre de départ) ou 3 jours.
  • Face aux objections (ADR 0010) : « redit » et « contredit » portent sur deux articles, jamais sur un module. Un ordre ne se corrige pas, ni par son auteur ni par un autre.
  • « Modules à voter » ne compte pas une version retenue par une objection : personne ne peut la voter tant qu'elle est retenue. Un article dont la seule version ouverte est retenue sort du compte, et y revient à la levée. La liste du groupe la compte toujours parmi les propositions en cours : elle est ouverte.
  • Dans une base existante, chaque document reçoit ses modules une fois, depuis son état présent (titre actuel, ordre actuel de chaque section), sans toucher un article ni un vote (crates/ld-server/src/module_amend.rs, journal module_amendments, migration 0007).

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 Échéance
Corriger une coquille sur son propre texte l'auteur de la version ; un administrateur sur un texte du seed appliquée tout de suite : les votes restent, les traductions restent à jour —
Corriger une coquille sur le texte d'un autre tout membre du groupe en attente : un message à l'auteur (aux administrateurs pour un texte du seed), qui valide ou refuse ; la correction se lit, avec son diff, dans « Détails » 3 jours sans réponse : appliquée
Revenir sur une correction (ou l'appliquer finalement) l'auteur, tant que le texte n'est pas en vigueur le texte d'avant revient (ou la correction passe) —
Corriger un texte en vigueur tout membre ; l'auteur (un administrateur pour le seed) valide seule une correction validée change le texte ; un refus est définitif 3 jours sans réponse : appliquée
Modifier le fond d'une proposition son auteur nouvelle révision : les votes antérieurs sont « à reconfirmer », les corrections en attente sont périmées ; elle répond aux objections qui attendent l'auteur —
Modifier le fond d'un texte en vigueur ou d'un texte de départ personne refusé : on propose une nouvelle version —

Deux corrections en attente sur un même texte : chacune est jugée contre le texte voté ; à l'application, celle qui ne tombe plus sur le texte qu'elle a lu est périmée (« recharge, puis recommence »). Les traductions restent éditoriales, sans validation. L'historique dit qui a écrit chaque correction et qui l'a validée, ou qu'elle est passée à l'échéance (ADR 0010).

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 (la coquille) et crates/ld-engine/src/correction.rs (qui la laisse entrer) ; écriture : crates/ld-server/src/proposals.rs et crates/ld-server/src/typos.rs.

Deux articles qui se répètent ou se contredisent

Tout membre peut faire une objection à une version : elle redit un autre article (elle le répète) ou elle le contredit, motif à l'appui. Une objection retient la dernière arrivée des deux versions jusqu'à sa levée — jamais un texte en vigueur : si la dernière arrivée est en vigueur, c'est l'autre qui est retenue. La version retenue n'entre pas en vigueur, quelles que soient ses voix. Pendant l'objection, on peut retirer son vote ou passer à « contre », jamais ajouter un « pour » (Yvv, 01/11/2026 : « Retirer ou "contre" ») — sous l'article, dans le panier comme par la chaîne : « Tout pour » la saute et le dit, « Tout contre » la prend. Elle ne peut que perdre des voix tant qu'elle est retenue ; à la levée, elle n'entre qu'avec les voix encore là. Pour qu'elle se vote de nouveau, son auteur répond : pour une redite, il modifie l'article visé ; pour une contradiction, il reformule. La personne qui a fait l'objection reçoit alors un message : lever ou réitérer ; sans réponse de sa part sous 3 jours, l'objection est levée.

Qui Quoi Effet Échéance
tout membre du groupe faire une objection « redit » ou « contredit », motif à l'appui la dernière arrivée des deux versions (jamais un texte en vigueur) ne prend plus de « pour » — « contre » et retrait seulement — et n'entre pas en vigueur ; message à son auteur —
l'auteur de la version retenue (tout membre pour une version du seed) « Modifier l'article visé » (redit) : une proposition liée, sur l'autre article, partie de son texte ; « Reformuler » (contredit) : une révision de fond de sa version la main passe à la personne qui objecte : message « lever ou réitérer » 3 jours pour elle
la personne qui a fait l'objection lever la version reprend des « pour », et entre en vigueur si les voix encore là suffisent —
la personne qui a fait l'objection réitérer la main revient à l'auteur : message « réponds à nouveau » aucune pour l'auteur
personne (3 jours sans geste après une réponse) levée : « 3 jours sans suite » —
un administrateur de trustinWallet lever levée « par un administrateur » —
l'auteur retirer sa version l'objection prend fin —

Une révision de fond de l'une ou l'autre des deux versions vaut réponse, une coquille non ; un seul tour à la fois (une autre réponse pendant le tour de la personne qui objecte ne change ni le message ni l'échéance) ; une personne n'a qu'une objection debout sur une même paire. Les signalements de contradiction d'avant sont devenus des « contredit » (migration 0008). Moteur : crates/ld-engine/src/objection.rs ; serveur : crates/ld-server/src/objections.rs, messages.rs, deadlines.rs (les échéances, au balayage de 5 minutes et au démarrage) ; ADR 0010.

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. document.json dit aussi les modules : le titre (son état, ses votes, ses traductions et leur fraîcheur) et l'ordre de chaque section. Tant qu'aucun article d'un document n'est en vigueur, sa publication attend (Yvv, 2026-11-02 : « Suspendre jusqu'au 1er texte ») : ni échec ni tentative comptée, l'état dit « suspendue », et le premier texte qui entre envoie tout (LD_PUBLISH_WITHOUT_ARTICLES=1 publie quand même).

Un texte de départ remplacé

Un document seedé n'est jamais réinstancié : quand le seed change un texte de départ (le Préambule devenu Raison d'être), un amendement de seed le remplace dans une base existante, une seule fois, et seulement sur un article que personne n'a touché (seed a minima d'origine, révision 1, aucun vote, aucune correction (ni en attente), aucune traduction modifiée, aucune objection, texte identique à l'empreinte attendue). Chaque décision est consignée (seed_amendments, et dans les journaux quand l'article garde son texte) ; appliqué, l'amendement se lit dans l'historique de l'article (« texte de départ remplacé », avec le diff) et le texte est republié (crates/ld-server/src/seed_amend.rs).

De même, un texte de départ en vigueur que le seed met désormais en avant comme Proposition seed (I1, E1, E2 ; ADR 0011) le devient dans une base existante par un amendement gardé, une seule fois par document et par article, et seulement si personne ne l'a touché (origine du seed, jamais entré par un vote ni confirmé, aucun vote ni bulletin de la chaîne, aucune coquille, traduction de membre ou objection, l'historique du seed, l'empreinte attendue) : la même version redevient ouverte et marquée, l'historique le dit ; son cran descend à 2 avec lui, seulement si personne n'y a touché non plus (aucun changement d'inertie proposé, voté ou appliqué). Décisions consignées dans seed_proposal_amendments (crates/ld-server/src/seed_proposal_amend.rs).

De même, les quorums par cran du seed (ADR 0013) s'écrivent dans un document qui n'en a pas, par un amendement gardé (2026-11-03-quorums-par-cran, crates/ld-server/src/quorum_amend.rs), une seule fois par document : écrits là où il n'y en a pas, gardés s'ils sont autres (refus quorums_set) ; décisions consignées dans quorum_amendments, une ligne à la file là où le document publie. Jusque-là, chaque cran lit vote_floor (le C d'avant).

Accès — trustinWallet

Tout le monde connecté peut tout faire dans les groupes qu'il ouvre (lire, proposer, voter, corriger, faire une objection) 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, par la chaîne Ğ1 (ADR 0008, Yvv 2026-10-30 : « une personne une voix, mais la voix peut s'exprimer plusieurs fois […] c'est le dernier qui fait foi […] une transaction par vote »). Un vote — un article, une section ou tout le document — est une transaction signée par le portefeuille de la personne (duniter-connect, ou Ğecko par un lien et un QR code) : 0,1 Ğ1 vers le compte des votes et, dans la même transaction, le sceau du bulletin (ld1: + 64 chiffres hexadécimaux). La voix est celle de l'identité Ğ1 du compte qui signe, membre au moment où le serveur confirme la transaction sur l'indexeur ; quelle que soit la session (invitation ou connexion Ğ1), la même identité n'a qu'une voix par version, et le dernier vote fait foi, dans l'ordre de la chaîne. La chaîne montre qui a voté et quand, jamais quoi ; chacun ne voit que les totaux. Chacun reçoit le reçu de son bulletin (ses votes et son sel), le retrouve sur « Tes bulletins » et le vérifie dans son navigateur ; personne d'autre ne le reçoit (ADR 0008, « Le reçu »). Sans compte des votes configuré (LD_VOTE_ACCOUNT), le vote par la chaîne est fermé et l'interface le dit. Dans les groupes gérés (essai, Axiom…), tout membre vote directement, sans portefeuille.

Le groupe d'essai

Caché, quorum 1 à chaque cran (une voix seule passe), 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) ; remplacé le 2026-11-03 par un quorum par cran, les votants qui manquent comptant comme « non » (ADR 0013)
Textes de départ (2026-11-02) aucun article en vigueur : trois Propositions seed (I1, E1, E2) au cran 2, la publication suspendue jusqu'au premier texte (ADR 0011)
Quorum (2026-11-02 et 03) 12 · 12 · 50 · 50 · 50 dans Monnaie libre, 1 dans le groupe d'essai ; l'auteur d'un article le change avant le premier vote ; sous le quorum, les votants qui manquent comptent comme « non » (ADR 0013)
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 de la confirmation sur la chaîne : un membre sorti de la toile, ou dont l'accès est révoqué, garde les voix déjà confirmées.
  • Le serveur fait confiance à l'indexeur pour lire la transaction (remarque, virement, identité, appartenance à la toile) ; plusieurs indexeurs se configurent (ADR 0008).
  • Par Ğecko, le bulletin n'est lié à aucun compte : une copie nue de son sceau est ignorée, mais une copie payée (0,1 Ğ1) incluse avant lui par un autre compte le prendrait. Par l'extension, il est lié au compte qui signe.
  • Un bulletin non vu sur la chaîne en 24 heures est lu une dernière fois, puis lâché : un paiement plus tardif ne compte pas.
  • 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.
  • Une version retenue par une objection attend son auteur aussi longtemps qu'il ne répond pas ; une personne qui réitère sans fin la garde hors du vote : un administrateur peut lever (ADR 0010).
  • Les messages sont dans l'application, sans courriel : qui ne passe pas ne les voit pas, et la correction ou l'objection qui l'attendait passe à l'échéance de 3 jours.
  • Les aperçus (« si les bien cotées passent », « si tout passe ») montrent les articles seuls : un ordre ou un titre proposé n'y change pas encore la place des articles ni le titre (ADR 0009).

Questions ouvertes (à Yvv)

  • Licence du code — AGPL-3.0 (Yvv, 2026-11-02).
  • Texte « Paramètres par défaut » du seed (F1.2) — réécrit avec N1, N1.1 et O1 selon les règles appliquées (Yvv, 2026-11-02) ; un amendement de seed gardé remplace ces propositions ouvertes à 0 vote, et Yvv relit les textes en ligne.
  • 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).