Fusion de chantier/acte-certification (lots H et S) dans le lot V : le tampon et ses états, avec le quorum et les Propositions seed

- conflits résolus des deux côtés : kept_params garde le quorum (S) et la part simulée, la version déplacée, le cran d'avant (V) ; proposals.rs garde seedMinimal / seedProposal (S) et tallyPending / tallySimulated / myVoteState (V) ;
- simulation::reexamine juge sur le quorum gardé par l'adoption (params.quorum, à défaut celui de l'article) ;
- l'acte répété n'examine plus une adoption qui tient (params.reexamined) ;
- tests V repris sans texte en vigueur au départ (I1, E1 : la Proposition seed) et sur un quorum 2 (small_web) ; le test overview d'une personne invitée dans Monnaie libre suit la simulation (elle vote, chaîne fermée).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
Yvv
2026-11-03 05:32:51 +01:00
co-authored by Claude Opus 5.5
66 changed files with 5134 additions and 701 deletions
+7
View File
@@ -3,6 +3,13 @@
> **Complétée par [0007](0007-inertie-cinq-crans.md)** (2026-10-30) : l'inertie a cinq crans,
> calés sur la participation habituelle du groupe, et un changement d'inertie se vote au cran
> de l'article — il n'est plus voté au cran au-dessus.
> **Complétée par [0011](0011-propositions-seed.md)** (2026-11-02) : aucun article n'est en
> vigueur au départ ; les textes de départ des articles sont des Propositions seed, seuls les
> modules restent des *seeds a minima*.
> **Le plancher C est remplacé par [0013](0013-quorum.md)** (2026-11-03) : un quorum Q par
> cran (12 · 12 · 50 · 50 · 50 dans Monnaie libre, 1 dans le groupe d'essai), que l'auteur
> d'un article peut changer avant le premier vote ; sous le quorum, les votants qui manquent
> comptent comme « non ». `vote_floor` reste, comme quorum de référence de p0.
**Contexte.** Chaque article est sous vote permanent ; « dès qu'une proposition atteint le score,
elle remonte en vigueur ». La formule inertielle Ğ1 donne un seuil faible quand peu de gens
+4
View File
@@ -2,6 +2,10 @@
> Complète [0002](0002-vote-permanent.md) : la règle « l'inertie se vote au cran au-dessus »
> y est remplacée par l'héritage décrit ici. Décision d'Yvv du 2026-10-30 (revue, L10).
> **Le C de la formule est remplacé par [0013](0013-quorum.md)** (2026-11-03) : R = B^W +
> ratio(T')·T', T' = max(T, Q), un quorum Q par cran. M, G_k, s_k, p̃ et ses bornes restent ;
> « au-delà de C » se lit désormais « parmi les T' votants » ; les nombres ci-dessous sont ceux
> d'avant (ceux d'après : ADR 0013).
**Contexte.** Quatre niveaux (`low`, `standard`, `high`, `max`) fixaient M et G une fois pour
toutes. Yvv, 2026-10-30 : « L'indice d'inertie doit avoir 5 niveaux. Tu mets par défaut au
+90
View File
@@ -0,0 +1,90 @@
# 0011 — Les Propositions seed : rien en vigueur au départ, trois textes mis en avant
> Remplace, dans [0002](0002-vote-permanent.md), « les textes de départ sont des *seeds a
> minima* » pour les articles : seuls les modules (le titre, l'ordre de chaque section, ADR 0009)
> restent en vigueur sans vote. Décision d'Yvv du 2026-11-02.
**Contexte.** Depuis le 2026-10-21, la Raison d'être (I1) et les deux engagements fondamentaux,
Unicité du compte (E1) et Réciprocité (E2), étaient en vigueur au départ, sans vote (*seeds a
minima*, marge −C). Yvv, 2026-11-02 : « pour le démarrage, conserve un statut particulier pour
les 3 premiers modules. Mais ils ne sont pas en vigueur. Appelle les "Proposition seed" (intégré
par un ou deux clients pour amorcer le mouvement de vote). » Puis : « on pouvait l'amorcer avec
une inertie basse, pour que le nombre de votes initiaux soit assez petits pour commencer
l'expérience en mode prod. Et je mettrai, une fois les textes passés, une inertie forte pour
éviter que l'inertie passe avant les textes. » Au formulaire du même jour : le cran 2
(« basse ») ; la publication « Suspendre jusqu'au 1er texte ».
## Décision
- **Une Proposition seed** est une proposition ouverte du seed, mise en avant pour lancer le
vote : I1, E1 et E2 de l'Acte d'engagement Certification, dans chaque groupe. Elle **n'est pas
en vigueur** : elle y entre comme toute proposition, par son seuil, la place étant vide. Sa
marque est écrite à part (`proposals.seed_featured`) ; l'API dit `seedProposal` tant que la
version est ouverte et n'est jamais entrée en vigueur (`docs::ProposalRow::seed_proposal`).
Entrée en vigueur, c'est un texte adopté comme un autre. L'interface la marque
« Proposition seed » (fr), « Seed proposal » (en), « Propuesta seed » (es).
- **Au départ, aucun article n'est en vigueur.** Le titre du document et l'ordre de chaque
section restent des *seeds a minima* (en vigueur sans vote, ADR 0009). Le lecteur le dit
(« Aucun article n'est en vigueur… ») ; les trois textes se lisent dans « Propositions en
cours » et dans l'aperçu « si tout passe ».
- **Le cran 2 pour les trois**, une seule constante : `seed::SEED_PROPOSAL_LEVEL`. Le seed ne
leur donne pas de cran (le chargement du seed le refuse), l'amendement écrit celui-là.
**L'intention d'Yvv** : remonter l'inertie une fois les textes passés. Une proposition de
changement d'inertie se vote au cran de l'article (ADR 0007) : faite avant l'entrée des textes,
elle pourrait passer avant eux et leur demander davantage ; faite après, elle protège des
textes déjà adoptés. Le serveur n'automatise rien : c'est un vote, après les textes.
- **La publication attend le premier texte.** Tant qu'aucun article d'un document n'est en
vigueur, sa file d'envoi attend (`publish::waits_for_a_text`) : ce n'est pas un échec (aucune
tentative comptée, aucune erreur), l'API dit `publication.state = "suspended"`. Le premier
texte qui entre ajoute une ligne à la file, et tout part avec lui. `LD_PUBLISH_WITHOUT_ARTICLES=1`
publie quand même (un document sans article). Le groupe d'essai ne publie jamais.
## Une base existante
Un document seedé n'est jamais réinstancié. Dans une base existante (la production : I1, E1 et
E2 en vigueur, *seeds a minima*, dans Monnaie libre et dans le groupe d'essai), trois
**amendements de Proposition seed** (`crates/ld-server/src/seed_proposal_amend.rs`,
`2026-11-02-i1-proposition-seed`, `-e1-`, `-e2-`) décident une fois par document et par article,
consignés dans `seed_proposal_amendments` et dans les journaux.
**Le statut**, seulement si personne n'a touché le texte en vigueur : origine `seed`, jamais
entré par un vote ni confirmé ; aucun vote du serveur, aucune ligne de bulletin de la chaîne,
quel que soit son sort ; aucune coquille (appliquée, en attente ou refusée), aucune traduction
écrite par un membre, aucune objection qui le nomme ; son historique est celui du seed (le texte
initial, et pour I1 l'amendement de la Raison d'être du 30/10, révision 2) ; son texte est celui
de la Proposition seed d'aujourd'hui (empreinte). Appliqué : la même version, avec son texte, ses
traductions et son historique, devient ouverte et marquée ; l'article n'a plus de texte en
vigueur ; l'historique dit le changement (`seed_proposal`, sans diff). Refusé : le texte reste en
vigueur, *seed a minima*.
**Le cran**, avec le statut seulement, et seulement si personne n'y a touché : aucune proposition
de changement d'inertie d'un membre ouverte, appliquée ou votée, aucun vote qui l'a changé, et un
cran que le seed lui a donné avant (I1 : 3 ; E1 et E2 : 3, puis 4 depuis le 30/10). Appliqué :
l'article le dit (`inertia_changes`, « réglage de départ du texte »). Refusé : il garde son cran,
le statut change quand même.
**En production**, l'orch notait le 30/10 deux propositions d'inertie ouvertes à zéro vote dans
Monnaie libre, I1 → 5 et E1 → 5. Si elles sont encore ouvertes au démarrage, I1 et E1 y
deviennent des Propositions seed **à leur cran d'avant** (3 et 4 ; refus `inertia_proposal`), E2
au cran 2. Pour que les trois démarrent au cran 2, leurs auteurs les retirent avant la mise en
ligne (une proposition retirée sans vote ne compte plus). À trancher par Yvv avant M6.
Là où le document publie (Monnaie libre), chaque amendement appliqué ajoute une ligne à la file
(« Proposition seed : I1 sort de la vigueur »…), qui attend le premier texte. Les deux
amendements d'inertie du 30/10 (E1 et E2 de 3 à 4, ADR 0007) sont dépassés : décidés en
production, ils ne décident plus rien ailleurs (`superseded_by`).
## Les données
Migration `0009` (additive) : `proposals.seed_featured` ; la table `seed_proposal_amendments`
(statut et cran : appliqué, refusé et pourquoi, ou déjà là). Le seed : `"seedProposal": true` et
`"status": "open"` sur la version de I1, E1 et E2, sans `inertia`.
## Coût
- Personne ne lit de texte en vigueur avant le premier vote qui passe ; le dépôt des textes
garde la dernière publication jusque-là.
- Les comptes bougent : 0 article en vigueur, 35 propositions en cours (les 32 d'avant et les
trois Propositions seed) ; « Décisions » compte toujours 41 modules à voter.
- Les textes F1.2 et N1.1 du seed disent encore Unicité du compte et Réciprocité au cran 4 au
départ : orch les réécrira au prochain tour de textes, avec la relecture d'Yvv.
+135
View File
@@ -0,0 +1,135 @@
# 0013 — Le quorum : les votants qui manquent comptent comme « non »
> Remplace, dans [0002](0002-vote-permanent.md) et [0007](0007-inertie-cinq-crans.md), le
> plancher C de voix pour placé devant la formule. Décisions d'Yvv du 2026-11-02 et du
> 2026-11-03. La migration est la `0011` : la `0010` reste au lot V.
**Contexte.** Depuis le 2026-10-21, `R = C + B^W + (M + (1 − M)(1 − (T/W)^G)) · max(0, T − C)` :
C voix pour d'abord (50 dans Monnaie libre, 1 dans le groupe d'essai), puis la part de l'inertie
sur les votes au-delà. Yvv, 2026-11-02 : « C suit le cran, mais c'est une proposition par
défaut, variable modifiable par l'auteur initial du texte » ; « ce n'est pas un nombre de vote
pour a priori, c'est plutôt un quorum, à partir de ce nombre, alors il faut la bonne proportion
attendue par l'indice. Si c'est 60 % et c = 10, alors il faut 6 voix pour et ça passe. » Au
formulaire : « La courbe d'aujourd'hui, après le quorum » ; les quorums par défaut
« 12 · 12 · 50 · 50 · 50 », le groupe d'essai à 1 partout ; « L'auteur, avant le 1er vote ».
Le 2026-11-03, à « Sous le quorum, les votants qui manquent comptent-ils comme des « non » ? » :
« Ils comptent comme non ».
## Décision
**La formule, jugée sur un quorum Q** (`crates/ld-engine/src/threshold.rs`) :
```
T' = max(T, Q)
R = B^W + (M + (1 − M)·(1 − (T'/W)^G)) · T'
```
Une version passe si au moins une voix est exprimée et si « pour » ≥ ⌈R⌉. Sous le quorum, les
votants qui manquent comptent comme « non » : la part de l'inertie est demandée à Q votants.
La règle tient dans **une seule fonction nommée**, `threshold::judged_voters`, qui porte la
phrase d'Yvv. M, G et les cinq crans ne changent pas (ADR 0007) : la courbe est celle
d'aujourd'hui, après le quorum. L'exemple d'Yvv (60 %, Q = 10) donne 6 « pour » ; 6 « pour »
contre 5 « contre » ne passent pas, 7 contre 4 passent.
**Monotone.** Un « pour » de plus ne nuit jamais, un « contre » de plus n'aide jamais : à
« pour » fixé, un « contre » de plus laisse T' à Q ou l'augmente, et ratio(T')·T' ne décroît pas
avec T' (sa dérivée reste entre 0,06 et 1 pour les cinq crans, p̃ dans ses bornes). Les tests
le vérifient sur une grille (`an_against_never_helps`, l'équivalence de `passes` avec
`yes_needed` et `no_needed`).
**Ce que l'écran peut dire** (`Evaluation`) : `quorum` ; `yesNeeded`, le total de « pour » qui
passe avec les « contre » d'aujourd'hui ; `noNeeded`, le total de « contre » qui tient les
« pour » d'aujourd'hui en échec (0 : le quorum les tient déjà) ; `missing = yesNeeded − pour` ;
`wellRated`, la part de l'inertie tenue sur les T votants venus, le quorum mis de côté
(l'aperçu « si les bien cotées passent »).
**Un quorum par cran**, le défaut d'un article à ce cran (`documents.quorums`) : Monnaie libre
**12 · 12 · 50 · 50 · 50**, le groupe d'essai **1 partout**. Une proposition d'inertie se juge
sur le quorum de son article (elle hérite de son cran, ADR 0007) ; un module, sur celui de son
cran.
**Le quorum d'un article** (`units.quorum`, NULL : celui du cran) est fixé par l'auteur de sa
première version — pour un texte du seed, sans auteur, par un administrateur —, et seulement
**avant le premier vote** : `trustin_access::sets_quorum`, la route `PUT /units/{id}/quorum`
(`{ "quorum": n | null }`, en-tête CSRF), dans `crates/ld-server/src/quorum.rs`. Bornes : de 2
à W (une voix seule ne fait jamais passer un texte), de 1 à W dans le groupe d'essai
(`ld_engine::inertia::quorum_bounds`, `trustin_access::TEST_GROUP`). Chaque changement est
consigné (`quorum_changes` : qui, de quoi, à quoi, quand). Refus : 403 à qui n'est pas
l'auteur, 400 `quorum` hors des bornes, 409 `voted` dès qu'un vote existe.
**« Un vote existe »** : une seule fonction, `quorum::voted_units` (et `quorum::a_vote_exists`
pour une unité), que le lot V étendra là et nulle part ailleurs. Sur l'une des versions de
l'article (textes, retrait, changement d'inertie ; toute révision) : un vote du serveur
(`votes`) ; une ligne de bulletin de la chaîne en attente ou confirmé (un bulletin refusé ou
expiré n'est pas un vote) ; une adoption (une version entrée en vigueur par le vote en garde la
trace, même ses votes retirés). **Limite connue** : un vote du serveur retiré avant toute
adoption ne laisse pas de ligne (`votes` ne garde que le dernier choix) ; après lui, l'auteur
peut de nouveau fixer le quorum.
**La participation de référence** reste p0 = 2Q₀/W, Q₀ le quorum de référence du document
(`documents.vote_floor` : 50 dans Monnaie libre, 1 dans le groupe d'essai), **jamais le quorum
d'un article** : un auteur qui baisserait le sien déplacerait l'échelle de tout le groupe.
## Une base existante
Un document seedé n'est jamais réinstancié. Tant que `documents.quorums` est NULL, chaque cran
lit `vote_floor` (le C d'avant : 50 et 1). L'**amendement de quorums**
`2026-11-03-quorums-par-cran` (`crates/ld-server/src/quorum_amend.rs`) décide une fois par
document, seulement si le seed d'aujourd'hui donne ces quorums à l'instance : NULL → écrit
(`applied`) ; les mêmes → `present` ; d'autres → refusé (`quorums_set`), gardés tels quels.
Chaque décision est consignée (`quorum_amendments` : ce qui était là, ce que dit le seed,
l'issue, la raison) et dans les journaux ; là où le document publie (Monnaie libre), une ligne
s'ajoute à la file (« quorums par cran : 12 · 12 · 50 · 50 · 50 (ADR 0013) »), qui attend le
premier texte (ADR 0011). Rien d'autre n'est touché : ni le quorum propre d'un article, ni un
vote, ni un texte.
## Les nombres
Monnaie libre, W = 5 745 (repli des tests), participation de référence (100 votants) :
| | cran 1 | cran 2 | cran 3 | cran 4 | cran 5 |
|---|---|---|---|---|---|
| quorum | 12 | 12 | 50 | 50 | 50 |
| « pour » à 0 vote (C d'avant : 50) | 8 | 9 | 39 | 43 | 46 |
| « pour » à 100 votants (C d'avant : 80 · 84 · 88 · 92 · 95) | 60 | 67 | 75 | 83 | 90 |
Au cran 2, quorum 12 : 9 « pour » passent avec 3 « contre » au plus ; 9 contre 4 demandent 11
(`yesNeeded`), il en manque 2 ; 8 « pour » ne passent pas même sans « contre » (`noNeeded` 0).
W = 7 224 (tests `ld-engine/src/inertia.rs`), « pour » exigés :
| Médiane | T | cran 1 | cran 2 | cran 3 | cran 4 | cran 5 |
|---|---|---|---|---|---|---|
| 120 votants | 120 | 72 | 81 | 90 | 100 | 108 |
| 120 votants | 500 | 284 | 310 | 347 | 386 | 424 |
| 120 votants | 2 000 | 1 068 | 1 123 | 1 252 | 1 389 | 1 537 |
| 360 votants | 120 | 76 | 86 | 96 | 106 | 113 |
| 360 votants | 360 | 216 | 242 | 270 | 299 | 324 |
| 360 votants | 500 | 296 | 328 | 367 | 407 | 443 |
| 360 votants | 2 000 | 1 092 | 1 164 | 1 301 | 1 446 | 1 598 |
Le cas de référence de la formule (vote forgeron v2.0.0 : W 7 224, 120 votants, M 50 %, G 0,2,
Q 0 → 94 voix) reste le test de la formule elle-même.
## Les données
Migration `0011` (additive) : `documents.quorums` (JSON des cinq quorums), `units.quorum`, les
tables `quorum_changes` et `quorum_amendments`. Le seed : `"quorums"` sur chaque instance.
`vote_floor` reste, lu pour p0. Les adoptions nouvelles gardent `quorum` dans leurs `params`
(celles d'avant gardent `constant`, lu tel quel). L'API : `doc.quorums`, `levels[].quorum`,
l'unité `quorum` (le sien ou `null`), `quorumDefault`, `canSetQuorum` ; le `document.json`
publié : `quorums`.
## Coût
- Les seuils de Monnaie libre baissent à faible participation : 9 « pour » au lieu de 50 pour
I1, E1 et E2 au cran 2 ; 39 au lieu de 50 au cran 3. À la participation habituelle, la part
s_k s'applique à tous les votants, plus seulement au-delà de C.
- **Dans le groupe d'essai, une voix seule passe**, à tout cran et quel que soit le nombre de
membres (avant : deux voix sous 16 membres). Les tests qui demandent deux voix y posent le
quorum 2 de l'article, comme son auteur le ferait.
- En production, si les propositions d'inertie I1 → 5 et E1 → 5 restent ouvertes (ADR 0011),
I1 et E1 restent aux crans 3 et 4 : leur quorum est 50, pas 12.
- Le texte F1.1 du seed (« Seuil = C + B^W + … ») et N1.1 (« le groupe demande d'abord C voix
pour ») décrivent encore C : orch les réécrira au prochain tour de textes, avec la relecture
d'Yvv (ce lot ne touche pas aux textes du seed).
+2
View File
@@ -15,4 +15,6 @@ pas une décision : on en écrit une nouvelle qui la remplace, et on le note dan
| [0008](0008-vote-par-transaction.md) | Le vote par transaction sur la chaîne Ğ1 : bulletin scellé, confirmation par l'indexeur, le dernier fait foi | 2026-10-30 |
| [0009](0009-modules-ordre-et-titre.md) | Les modules : l'ordre des articles de chaque section (inertie 2), le titre du document (inertie 4) | 2026-10-31 |
| [0010](0010-objections-et-coquilles-validees.md) | Objections « redit » / « contredit », coquilles validées, messagerie (remplace 0004, complète 0003) | 2026-10-31 |
| [0011](0011-propositions-seed.md) | Les Propositions seed : rien en vigueur au départ, trois textes mis en avant au cran 2, la publication attend le premier texte (complète 0002) | 2026-11-02 |
| [0012](0012-tampon-des-votes.md) | Le tampon des votes : l'intention visible tout de suite, la preuve de la chaîne, la réconciliation a posteriori ; la simulation tant que la chaîne est fermée (complète 0008, révise 0010) | 2026-11-02 |
| [0013](0013-quorum.md) | Le quorum par cran (12 · 12 · 50 · 50 · 50), fixé par l'auteur avant le premier vote ; sous le quorum, les votants qui manquent comptent comme « non » (remplace le C de 0002 et 0007) | 2026-11-03 |
+81 -37
View File
@@ -29,11 +29,15 @@ les applications clientes (Cesium, Ğecko…) peuvent suivre.
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 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é), marqués
*seed a minima* avec leur nombre réel de votes (*seed a minima · 0 vote*, puis *· 1 vote*…).
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**.
@@ -49,10 +53,10 @@ les applications clientes (Cesium, Ğecko…) peuvent suivre.
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, C, B, la participation habituelle du groupe et les cinq
crans), atteints depuis l'en-tête du document et depuis chaque vote.
5. **En dessous**, les propositions en cours — les 30 autres articles du texte source, à zéro
vote, inertie 3 / 5 — rangées par section (introduction, fondamental, technique,
**« 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
@@ -82,46 +86,64 @@ les applications clientes (Cesium, Ğecko…) peuvent suivre.
### Le seuil — formule inertielle Ğ1
```
R = C + B^W + (M + (1 − M)·(1 − (T/W)^G)) · max(0, T − C)
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, **C = plancher de
votants « pour »** (Monnaie libre : **50** ; groupe d'essai : 1). Adoptée si « pour » ≥ ⌈R⌉.
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 **au-delà de C** quand
le groupe vote comme d'habitude (participation p̃), et G_k s'en déduit :
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 | Au départ |
|---|---|---|---|---|
| 1 | très basse | 50 % | 60 % | |
| 2 | basse | 50 % | 67 % | l'ordre des articles de chaque section |
| 3 | moyenne | 55 % | 75 % | partout ailleurs |
| 4 | haute | 60 % | 83 % | Unicité du compte, Réciprocité, le titre du document |
| 5 | très haute | 66 % | 90 % | |
| 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 2C/W (Monnaie libre : 100 votants) ;
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 rien ne passe sous C voix pour.
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 = 7 224, C = 50 et une médiane de 120 votants, il faut, à 120 votants, 92, 97, 103, 109
et 113 voix pour ; à 500, 306, 329, 362, 397 et 432 ; à 2 000, 1 091, 1 145, 1 271, 1 404 et
1 549.
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 ; son cas de référence, lettres
données : 7224 / 120 votants, M 50 %, G 0,2, C 0 → 94 voix) et `crates/ld-engine/src/inertia.rs`
(les crans, la médiane, la référence, les bornes) ; mesure : `crates/ld-server/src/participation.rs`.
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* a pour marge −C : la première proposition qui
atteint son seuil le remplace.
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).
@@ -131,8 +153,10 @@ Chaque article porte son inertie, un cran de 1 à 5. La changer est une proposit
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, seulement si
aucun vote n'a changé leur inertie : `crates/ld-server/src/inertia_amend.rs`).
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)
@@ -141,7 +165,7 @@ Revue du 2026-10-30 : « En fin de section, il y a un "module" qui permet de cha
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 : −C) et son cran. Son inertie
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
@@ -281,7 +305,10 @@ traductions marquées éditoriales) et `document.json`, commit et pousse sur
É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.
(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é
@@ -294,6 +321,21 @@ journaux quand l'article garde son texte) ; appliqué, l'amendement se lit dans
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,
@@ -319,7 +361,7 @@ gérés (essai, Axiom…), tout membre vote directement, sans portefeuille.
## Le groupe d'essai
Caché, plancher C = 1, sans publication : on y éprouve tout (adoption, coquilles, découpage)
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)
@@ -330,7 +372,9 @@ sans toucher au texte de la communauté. Chiara et Yvv en sont membres.
| 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) |
| 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 |
+14 -10
View File
@@ -5,7 +5,10 @@ Chaque contrôle existe en deux versions : **automatique** (Playwright, `web/e2e
sur un contrôle vaut échec du contrôle tant qu'elle n'est pas traitée.
Où tester : les contrôles qui écrivent (C5, C6, C7, C21, C22, C25, C26, C28–C31) se font dans le **groupe
d'essai** (caché, plancher C = 1, jamais publié) — jamais sur le texte de la communauté. Les
d'essai** (caché, quorum 1 à chaque cran — une voix seule y passe, ADR 0013 —, jamais publié) — jamais sur le texte de la communauté. Au départ, rien
n'y est en vigueur (ADR 0011) : les contrôles qui lisent un texte en vigueur (C4 à C6, C20, C21, C24,
C28 à C31) y font d'abord entrer Raison d'être, Unicité du compte et Réciprocité par le vote (une voix
suffit, deux au plus, puis leur retrait : le texte reste en vigueur, à zéro vote ; `seedsInForce`, `web/e2e/helpers.ts`). Les
votes par la chaîne Ğ1 (C11, C17, C23, C25, C32, C33) ne se jouent, pour l'automate, que sur une **chaîne
simulée** (`web/e2e/chain-mock.mjs` : un faux nœud, un faux indexeur, un faux portefeuille) ;
pour une personne, ils coûtent 0,1 Ğ1 réels : c'est un acte « paye » d'Yvv.
@@ -14,13 +17,13 @@ pour une personne, ils coûtent 0,1 Ğ1 réels : c'est un acte « paye » d'Yvv.
|---|---|---|---|
| C1 | L'accueil, sans session | ouvrir `/` sans être connectée | « Rendre possible la décision collective », puis le leitmotiv en trois lignes : « contexte et cadrage », « processus et modalités », « boîte à outils » ; « Se connecter avec sa clé Ğ1 » et sa note ; pas de piliers ni de groupes ; le menu à gauche avec les quatre outils, trois éteints |
| C2 | L'accueil, avec session | se connecter : on arrive sur `/` | le titre, le leitmotiv, puis directement le choix du groupe : Monnaie libre en grand, Axiom, Librodrome, Groupe local Vallée Drôme Crestois ; **pas** l'Atelier du canal ; `/groupes` et « Mes groupes » (menu) ramènent ici |
| C3 | Le texte en vigueur | Monnaie libre → Docs de référence → Acte d'engagement Certification | trois articles seulement (Raison d'être, Unicité du compte, Réciprocité), chacun « seed a minima · 0 vote » — le nombre réel de ses votes, qui change quand on vote —, sous le titre du document et à la fin de chaque section ses modules (C25, C26) ; en dessous, « Propositions en cours » (30 lignes, une par article) |
| C4 | Gestes contextuels | survoler la Raison d'être → « Le vote » | le vote se **déplie sous l'article**, sans fenêtre : seuil 50 voix pour, il en manque 50 ; « La formule du seuil » se déplie : « M — majorité à pleine participation : 55 % — inertie 3 / 5 · moyenne », et le lien « Réglages de la formule » ; l'URL garde le vote déplié (`?vote=`) ; « Le vote » de nouveau le replie |
| C5 | Entrée en vigueur | groupe d'essai : à deux, déplier le vote de « Les deux garanties réciproques », « Pour » | au second vote, « … est entré en vigueur » ; le texte en vigueur compte quatre articles, le vote reste déplié sous le nouveau texte (2 pour · 0 contre) |
| C3 | Le texte au départ : les Propositions seed | Monnaie libre → Docs de référence → Acte d'engagement Certification | aucun article en vigueur (ADR 0011) : « Aucun article n'est en vigueur. Les propositions ci-dessous remontent dès qu'elles atteignent leur seuil. », sous le titre du document, puis à la fin de chaque section ses modules (C25, C26) ; en dessous, « Propositions en cours » (33 lignes, une par article), dont Raison d'être, Unicité du compte et Réciprocité marquées « Proposition seed » (au survol : « Texte de départ mis en avant pour lancer le vote… »), « 0 pour · 0 contre », « inertie 2 / 5 · basse » |
| C4 | Gestes contextuels | groupe d'essai, où la Raison d'être est entrée en vigueur par le vote : la survoler → « Le vote » | le vote se **déplie sous l'article**, sans fenêtre : le seuil et les voix qui manquent ; « La formule du seuil » se déplie : « M — majorité à pleine participation : 50 % — inertie 2 / 5 · basse », et le lien « Réglages de la formule » ; l'URL garde le vote déplié (`?vote=`) ; « Le vote » de nouveau le replie |
| C5 | Entrée en vigueur | groupe d'essai (Raison d'être, Unicité du compte et Réciprocité entrées en vigueur par le vote) : déplier le vote de « Les deux garanties réciproques », « Pour » ; une deuxième personne si cette voix ne suffit pas | à la voix qui suffit, « … est entré en vigueur » ; le texte en vigueur compte quatre articles, le vote reste déplié sous le nouveau texte (autant de « pour » que de voix, 0 contre) |
| C6 | Coquille sans vote | groupe d'essai, **en administratrice** (un texte du seed n'a pas d'auteur) : Unicité du compte → « Le vote » → « Coquilles, traductions, objections, historique » (onglet « Détails ») → « Corriger une coquille », remplacer les apostrophes droites par des apostrophes typographiques (« Je m’engage sur l’honneur ») | « Coquille corrigée, sans toucher aux votes. » ; un changement de sens est refusé : « Ce changement touche au sens : propose-le comme modification. » (sans être administratrice, la correction attend : C31) |
| C7 | Une décision par proposition | groupe d'essai : « Proposer un nouvel article », deux paragraphes « Je m'engage à… » | l'assistant : « Ce texte semble porter 2 décisions » ; « Découper en 2 brouillons » ; « Tes brouillons » apparaît |
| C8 | Trois langues | choisir EN puis ES pour le texte | « Certification Commitment Act », « Acta de compromiso de Certificación » ; l'interface suit |
| C9 | Les aperçus | « Si tout passe », puis « Si les bien cotées passent » | 33 articles avec la mention d'aperçu, puis 3 |
| C9 | Les aperçus | « Si tout passe », puis « Si les bien cotées passent » | 33 articles avec la mention d'aperçu, puis aucun (rien en vigueur dans Monnaie libre, rien de bien coté sans « pour ») |
| C10 | trustinWallet | ouvrir `/acces` sans être administratrice | « La gestion des accès est réservée aux administrateurs de trustinWallet. » (côté admin : créer un lien d'invitation) |
| C11 | Une personne, une voix | avec un lien d'invitation et un portefeuille dont le compte n'est pas membre de la toile (Bob, chaîne simulée), voter « Pour » sur un article de Monnaie libre | le vote dit que la voix est celle de l'identité Ğ1 du portefeuille qui signe ; après signature : « Ton vote n'a pas été compté : le portefeuille qui a signé n'est pas celui d'un membre de la toile de confiance Ğ1. », et sous l'article « Ton dernier vote n'a pas été compté… », 0 pour ; dans le groupe d'essai, la même personne vote directement, sans portefeuille |
| C12 | Lien d'équipe | administrateur : `/acces` → « Liens d'équipe », cocher le groupe d'essai, créer ; l'ouvrir dans deux navigateurs, sous deux noms | chacun arrive sur ses groupes sous son nom ; dans `/acces`, « 2 / 30 personnes » et deux identités « venue par » le lien ; un nom déjà pris est refusé, même autrement écrit (« luna » pour « Luna ») ; sur un navigateur où quelqu'un est connecté, « Ce n'est pas moi » le déconnecte ; « Révoquer » ferme le lien |
@@ -30,16 +33,16 @@ pour une personne, ils coûtent 0,1 Ğ1 réels : c'est un acte « paye » d'Yvv.
| C15 | Le menu | survoler les outils ; ouvrir Docs, puis Mandats ; revenir à l'accueil | « 1 » à côté de « Docs de référence » ; aucun outil surligné sur la page du groupe, seul celui où l'on est ensuite ; au survol, seul Docs réagit ; Mandats s'ouvre quand même (ses « À venir ») ; hors d'un groupe, les outils mènent au dernier groupe ouvert (ou à l'accueil s'il n'y en a pas) |
| C16 | En cours, à venir | Monnaie libre → Docs, Mandats, Protocoles ; les anciennes adresses `/decisions`, `/mandats`, `/protocoles` | Docs : « En cours » (Acte d'engagement Certification) et « À venir » (Acte d'engagement forgerons) ; Mandats : Administration forum Duniter, Administration forum Monnaie libre ; Protocoles : Runtime upgrade — décision on-chain ; les « À venir » sont éteints, sans lien ; ils suivent la langue ; les anciennes adresses mènent aux outils du groupe courant |
| C17 | Décisions | Monnaie libre → Décisions ; voter (par la chaîne : bulletin, transaction, confirmation) sur une version d'un article, recharger | une ligne par doc : « Acte d'engagement Certification · 41 modules à voter · dont 41 sans ton vote » (33 articles, le titre, l'ordre de 7 sections), puis « dont 40 » ; la ligne ouvre le lecteur |
| C18 | La Raison d'être | Monnaie libre → Acte d'engagement Certification, puis EN, puis ES | en tête du texte en vigueur, « Raison d'être » : la première phrase en italique, puis deux paragraphes ; « Purpose », « Razón de ser » |
| C18 | La Raison d'être | Monnaie libre → Acte d'engagement Certification → « Si tout passe », puis EN, puis ES | en tête du texte, « Raison d'être » : la première phrase en italique, puis deux paragraphes ; « Purpose », « Razón de ser » |
| C19 | Les versions d'un article | Monnaie libre → « Propositions en cours » → « Connaissance suffisante » (au clavier : Tab jusqu'à la ligne, Entrée) | une seule ligne, « 2 versions » ; dépliée : « variante 1.0.0 » et « variante 0.4.0-draft », chacune avec son niveau et ce qui la distingue ; un clic sur une version déplie son vote sous elle ; un nouveau clic sur la ligne la replie |
| C20 | Réglages de la formule et cinq crans | Monnaie libre → Acte d'engagement : « Réglages de la formule » (en-tête) ; puis Unicité du compte → « Le vote » → « Réglages de la formule » ; dans le groupe d'essai, Réciprocité → « Le vote » → « Proposer un changement d'inertie » → 5 → « Soumettre au vote » | W 5 745 (toile de confiance Ğ1), C 50, B 0,1 ; « 100 votants sur 5 745 (1,74 %), deux fois C : la participation de référence… (0 pour l'instant) » ; le tableau des cinq crans : très basse, basse, moyenne, haute, très haute ; M 50, 50, 55, 60, 66 % ; part exigée 60, 67, 75, 83, 90 % ; voix pour à 100 votants 80, 84, 88, 92, 95, « Voix pour : à 100 votants, comme d'habitude. » ; depuis le vote déplié : « Inertie · 4 / 5 · haute », la ligne du cran 4 marquée « cet article », 50 voix, « Voix pour : à 0 votant, la participation de cette version. » ; le sélecteur montre les cinq crans, 4 « actuelle », atteignable au clavier mais jamais choisi ; un seul arrêt de tabulation ; les flèches passent d'un cran à l'autre et le choisissent, en boucle ; le vote de la proposition se déplie : « inertie vers 5 / 5 · très haute », votée à « inertie 4 / 5 · haute » |
| C20 | Réglages de la formule et cinq crans | Monnaie libre → Acte d'engagement : « Réglages de la formule » (en-tête) ; puis, dans « Propositions en cours », Unicité du compte → son vote → « Réglages de la formule » ; dans le groupe d'essai, Réciprocité (entrée en vigueur par le vote) → « Le vote » → « Proposer un changement d'inertie » → 5 → « Soumettre au vote » | W 5 745 (toile de confiance Ğ1), B 0,1 ; « 100 votants sur 5 745 (1,74 %), deux fois 50, le quorum de référence : la participation de référence… (0 pour l'instant) » ; le tableau des cinq crans : très basse, basse, moyenne, haute, très haute ; M 50, 50, 55, 60, 66 % ; part exigée 60, 67, 75, 83, 90 % ; quorum 12, 12, 50, 50, 50 (ADR 0013) ; voix pour à 100 votants 60, 67, 75, 83, 90, « Voix pour : à 100 votants, comme d'habitude. », « Part exigée : la part de « pour » demandée, à 100 votants comme d'habitude. », « Quorum : en dessous, les votants qui manquent comptent comme « non ». … » ; depuis le vote déplié : « Inertie · 2 / 5 · basse », la ligne du cran 2 marquée « cet article », à 0 votant 8, 9, 39, 43, 46 voix, « Voix pour : à 0 votant, la participation de cette version. » ; le sélecteur montre les cinq crans, 2 « actuelle », atteignable au clavier mais jamais choisi ; un seul arrêt de tabulation ; les flèches passent d'un cran à l'autre et le choisissent, en boucle ; le vote de la proposition se déplie : « inertie vers 5 / 5 · très haute », votée à « inertie 2 / 5 · basse » |
| C21 | Le vote déplié | groupe d'essai : Unicité du compte → « Le vote », puis « Pour » ; une autre personne ouvre le même vote | sous l'article : le niveau d'eau, « 0 pour · 0 contre », « Seuil : … voix pour », « Il manque … », « Tu n'as pas voté sur cette version. » ; après « Pour » : « Ton vote : pour · enregistré », « 1 pour · 0 contre », le bouton enfoncé, « Ton vote ne se montre à personne : seuls les totaux sont visibles. » ; l'autre personne voit 1 pour, jamais qui ; « Le vote » replie ; « Retirer mon vote » remet 0 |
| C22 | Le vote groupé | groupe d'essai : « Propositions en cours » → « Engagements techniques » → « Voter cette section » ; « Tout pour » ; dans « Connaissance suffisante », « Pour » sur la variante 1.0.0 ; recharger ; « Voter (n) » | le panier s'ouvre sur la section ; « Tout pour » remplit les articles à une version, pas « Connaissance suffisante » ni « Rencontre physique… » (« Plusieurs versions : choisis la tienne. », et le compte des articles laissés) ; le panier reste après rechargement (« Voter en lot · n ») ; un seul envoi : « n votes enregistrés. », le panier vide, la variante choisie à 1 pour |
| C23 | Le vote par la chaîne Ğ1 | Monnaie libre, un portefeuille dans le navigateur : « Voter en lot », « Pour » sur Unicité du compte et Réciprocité, « Signer et envoyer (2) » ; puis sous Réciprocité, « Contre » (l'indexeur en retard) puis « Retirer mon vote » ; puis sans portefeuille : « Pour » → « Passer par Ğecko » | une seule signature pour les deux : 0,1 Ğ1 vers le compte des votes et une remarque `ld1:` + 64 chiffres, rien du vote en clair ; « Ton vote compte : il est inscrit sur la chaîne Ğ1. », « Compté pour l'identité Ğ1 « Alice ». » ; sous l'article « Ton vote : pour · inscrit sur la chaîne Ğ1 », 1 pour ; « En attente de la chaîne Ğ1 : contre. » ; le retrait, plus récent sur la chaîne, fait foi même quand le « contre » est confirmé après lui (0 pour · 0 contre) ; Ğecko : un QR code et le lien `g1://<compte>?amount=0.1&comment=ld1:…`, puis la confirmation dès que la chaîne la montre |
| C24 | Sans compte des votes | Monnaie libre sur un serveur sans `LD_VOTE_ACCOUNT`, puis le groupe d'essai | pas de « Voter en lot » ni « Voter cette section » ; sous l'article : « Le vote par la chaîne Ğ1 n'est pas encore ouvert : le compte qui reçoit les votes reste à créer. Tu peux lire, proposer et faire une objection. », pas de bouton, les totaux et le seuil restent ; le panier ouvert par son adresse (`?onglet=panier`) dit la même chose, son bouton éteint, et **jamais** « Tes votes comptent dès l'envoi » ; dans le groupe d'essai, le panier et les boutons sont là |
| C23 | Le vote par la chaîne Ğ1 | Monnaie libre, un portefeuille dans le navigateur : « Voter en lot », « Pour » sur Unicité du compte et Réciprocité (Propositions seed), « Signer et envoyer (2) » ; puis, dans « Propositions en cours », sous Réciprocité, « Contre » (l'indexeur en retard) puis « Retirer mon vote » ; puis sans portefeuille : « Pour » → « Passer par Ğecko » | une seule signature pour les deux : 0,1 Ğ1 vers le compte des votes et une remarque `ld1:` + 64 chiffres, rien du vote en clair ; « Ton vote compte : il est inscrit sur la chaîne Ğ1. », « Compté pour l'identité Ğ1 « Alice ». » ; sous la proposition « Ton vote : pour · inscrit sur la chaîne Ğ1 », 1 pour ; « En attente de la chaîne Ğ1 : contre. » ; le retrait, plus récent sur la chaîne, fait foi même quand le « contre » est confirmé après lui (0 pour · 0 contre) ; Ğecko : un QR code et le lien `g1://<compte>?amount=0.1&comment=ld1:…`, puis la confirmation dès que la chaîne la montre |
| C24 | Sans compte des votes | Monnaie libre sur un serveur sans `LD_VOTE_ACCOUNT`, puis le groupe d'essai | pas de « Voter en lot » ni « Voter cette section » ; sous la première proposition : « Le vote par la chaîne Ğ1 n'est pas encore ouvert : le compte qui reçoit les votes reste à créer. Tu peux lire, proposer et faire une objection. », pas de bouton, les totaux et le seuil restent ; le panier ouvert par son adresse (`?onglet=panier`) dit la même chose, son bouton éteint, et **jamais** « Tes votes comptent dès l'envoi » ; dans le groupe d'essai, le panier et les boutons sont là |
| C25 | L'ordre des articles | groupe d'essai : en fin de « Conclusion », « Proposer un autre ordre » ; cliquer « Monnaie G1 » puis la place 1 ; au clavier, flèche bas puis haut ; « Proposer cet ordre » ; « Pour » ; une deuxième personne vote « Pour » si cette voix ne suffit pas (dès 16 membres, une voix suffit dans le groupe d'essai : ADR 0007) ; puis, dans Monnaie libre, sur un téléphone, avec un portefeuille : « Voter en lot », « Pour » sur « Ordre des articles · Engagements fondamentaux », « Signer et envoyer (1) » | chaque section finit par « Ordre des articles · <section> » (7, aucun pour l'Ordonnancement, un seul article), ses articles numérotés, « 2 articles · inertie 2 / 5 · basse », « seed a minima · 0 vote » ; le vote d'un ordre en vigueur déplié montre la liste entière ; la liste où l'on clique : l'article choisi marqué, puis à sa place, annoncé (« « Monnaie G1 » en place 1 sur 2. »), « Proposer cet ordre » éteint tant que c'est l'ordre en vigueur ; le vote de l'ordre proposé se déplie dans la liste des propositions, l'ordre proposé en clair ; il est dans le panier, à la fin de sa section ; à la voix qui suffit : « Le nouvel ordre de « Conclusion » est entré en vigueur. », la section se lit dans le nouvel ordre ; par la chaîne : « Ton vote compte : il est inscrit sur la chaîne Ğ1. », « seed a minima · 1 vote » ; sur un téléphone, rien ne déborde, chaque ligne fait au moins 44 px |
| C26 | Le titre du document | groupe d'essai : sous le titre, « Proposer un autre titre » ; « Acte d'engagement de la certification » ; « Pour » ; une deuxième personne vote « Pour » si cette voix ne suffit pas ; lire en anglais | sous le titre : « Titre du document · inertie 4 / 5 · haute · seed a minima · 0 vote » et les trois gestes ; le titre proposé se vote dans la liste des propositions (« Titre du document ») ; à la voix qui suffit : « Le titre « … » est entré en vigueur. », le document change de titre, son vote reste déplié sous le titre ; en anglais, l'ancien titre traduit, marqué « translation needs review » |
| C27 | La participation ramenée dans ses bornes | un groupe de 4 dont la médiane est 2,5 votants, ramenée à 50 % (l'automate fait répondre ces chiffres au serveur) : « Réglages de la formule » | « 3 votants sur 4 (62,5 %) : la médiane des 12 propositions votées depuis un an. » — la part de la mesure elle-même, jamais 3 sur 4 arrondi d'abord ; puis « Ramenée entre 5 % et 50 % de l'électorat : le groupe demande ses voix pour comme si 2 personnes votaient (50 %). » ; « Part exigée : les « pour » demandés au-delà de C, à 2 votants comme d'habitude. » |
| C27 | La participation ramenée dans ses bornes | un groupe de 4 dont la médiane est 2,5 votants, ramenée à 50 % (l'automate fait répondre ces chiffres au serveur) : « Réglages de la formule » | « 3 votants sur 4 (62,5 %) : la médiane des 12 propositions votées depuis un an. » — la part de la mesure elle-même, jamais 3 sur 4 arrondi d'abord ; puis « Ramenée entre 5 % et 50 % de l'électorat : le groupe demande ses voix pour comme si 2 personnes votaient (50 %). » ; « Part exigée : la part de « pour » demandée, à 2 votants comme d'habitude. » |
| C28 | Objection « redit » ; sur la version retenue, « contre » et retrait, jamais « pour » | groupe d'essai, à trois (Aude, Oscar, Vera) : Aude propose un nouvel article qui répète « Unicité du compte » ; Oscar, dans « Détails » de cette proposition → « Faire une objection » → « Redit », « En vigueur — Unicité du compte », un motif → « Envoyer l'objection » ; Vera déplie son vote → « Contre », puis « Retirer mon vote » ; Vera ouvre « Voter en lot » → « Tout le document » : « Tout pour », puis « Tout contre », puis « Vider » ; Aude ouvre « Messages » → « Modifier l'article visé », complète le texte et soumet ; Oscar ouvre « Messages » → « Lever l'objection » ; Vera déplie de nouveau son vote | « Objection enregistrée : jusqu'à sa levée, personne ne peut plus voter pour la dernière arrivée des deux versions. » ; chez Oscar, « « … » redit « Unicité du compte » », « personne ne peut plus voter pour cette version », « Lever l'objection » ; chez Vera, « Une objection retient cette version : jusqu'à sa levée, personne ne peut plus voter pour. Tu peux voter contre ou retirer ton vote ; à la levée, elle n'entre en vigueur qu'avec les voix encore là. », « Elle redit « Unicité du compte ». », pas de « Pour », mais « Contre », la ligne marquée « retenue par une objection » ; après « Contre » : « Vote enregistré. », « Ton vote : contre », « 0 pour · 1 contre », et « Retirer mon vote » ; après le retrait : « Vote retiré. », « 0 pour · 0 contre », toujours pas de « Pour » ; dans le panier, la version retenue montre « Contre » sans « Pour », avec « une objection la retient : contre ou retrait, pas de « pour » » ; « Tout pour » la laisse de côté et le dit (« Tu as tout mis pour, sauf 1 version qu'une objection retient : sur elle, tu peux voter contre ou retirer ton vote. », le nombre suivant les versions retenues du document) ; « Tout contre » la prend (« Contre » enfoncé) ; chez Aude, « Messages, 1 non lu », le message « Oscar fait une objection : ta version « … » redit « Unicité du compte »… Pour répondre, modifie l'article visé. », puis le panneau « Proposer » sur Unicité du compte, partant de son texte, avec « Cette proposition répond à une objection… » ; chez Oscar, « Ton objection sur « … » a reçu une réponse. », une échéance, « Lever l'objection » et « Réitérer l'objection » ; levée : « Objection levée. », le message dit « objection levée » sans plus aucun geste ; Vera peut de nouveau voter, « Pour » compris |
| C29 | Objection « contredit », levée à l'échéance | groupe d'essai : Aude propose un article qui contredit « Réciprocité » ; Oscar fait une objection « Contredit » ; Aude déplie le vote de sa proposition → « Reformuler », change le fond, « Enregistrer la correction » ; Oscar ne fait rien ; trois jours passent (l'automate avance l'horloge du serveur : `POST /api/dev/clock`, connexion de développement seulement) | chez Aude : « Elle contredit « Réciprocité ». », « Pour qu'elle se vote à nouveau, reformule-la… », « Reformuler » ouvre « Détails » avec le formulaire de modification ; « Nouvelle version enregistrée : les votants devront reconfirmer. », puis « Une réponse est arrivée : Oscar lève ou réitère l'objection d'ici le … » ; trois jours après : l'objection dit « levée : 3 jours sans suite », la proposition se vote de nouveau, le message d'Oscar dit « objection levée : 3 jours sans suite », sans geste |
| C30 | La coquille d'un autre, validée par l'auteur | groupe d'essai : Aude propose « Clé unique et vivante » ; Vera, dans « Détails » → « Corriger une coquille », apostrophes typographiques → « Enregistrer la correction » ; Aude ouvre « Messages » → « Valider » | chez Vera : « Ta correction attend l'auteur du texte : elle s'applique quand il la valide, ou d'elle-même le … » ; le texte ne change pas ; « Coquilles proposées » montre le diff, « proposée par Vera », « en attente : s'applique d'elle-même le … » ; chez Aude : « Vera propose une correction de coquille dans ta version « Clé unique et vivante ». », le diff, une échéance, « Valider » / « Refuser » ; « Correction appliquée. », le message dit « correction appliquée » ; le texte porte la correction, l'historique « coquille corrigée · par Vera · validée par Aude » |
@@ -83,3 +86,4 @@ page, la langue et la taille de l'écran. Les retours se traitent dans trustinWa
| 2026-10-31 | automate | local, `033b331` et la relecture de `cd7e683` (coquille sur un texte qui vient d'entrer, objection face à un texte retiré, objection en double, retrait qui relance l'adoption) | C1–C33, M1 | 34 / 34 verts (35 tests) |
| 2026-11-02 | automate | local, lot G sur `5d1f865` (décision d'Yvv du 01/11 : sur une version retenue, « contre » et retrait, jamais « pour » ; C28 ajusté : « Contre » et le retrait sous l'article, le panier) | C1–C33, M1 | 34 / 34 verts (35 tests) |
| 2026-11-02 | automate | local, lot G fusionné (`0919b46`) et les articles des règles réécrits (amendement de seed sur une proposition ouverte) | C1–C33, M1 | 34 / 34 verts (35 tests) |
| 2026-11-03 | automate | local, lot S (Propositions seed, ADR 0011 ; le quorum par cran, ADR 0013 : C3, C4, C5, C9, C18 à C20, C23, C24, C27, M1 repris) | C1–C33, M1 | 34 / 34 verts (35 tests) |
+71 -16
View File
@@ -1,8 +1,20 @@
# Tableau — revue d'Yvv du 2026-10-30
> Tenu par orch (seul rédacteur). État courant seulement ; l'historique est dans git.
> Tenu par l'intégrateur libredecision-d4, par délégation d'orch (dev-63, depuis le 03/11 à 05 h 02).
> État courant seulement ; l'historique est dans git.
> Source : le message « REVIEW DECISION » d'Yvv, 2026-10-30 vers 08 h.
## Sessions
| Rôle | Session | Ce qu'elle fait |
|---|---|---|
| orch | dev-63 (`e66db8ca`), ouverte dans /DEV | orchestre, parle à Yvv, pousse et met en ligne sous mandat (« déploie » et « pousse », du 03/11 au 08/11) |
| intégrateur | libredecision-d4, ouverte dans le dépôt | mène S, V puis U (un sous-agent à la fois), relit, fusionne, tient ce tableau, prépare les dossiers d'acte ; ne pousse et ne déploie rien |
Vers orch : « ACTE <lot> pousse » (dépôt, branche, sha exact) ; « PRÊT M6 » (dossier figé, sha,
relecture indépendante inscrite dans `relectures.json`) ; QUESTION pour Yvv, avec sa réponse par
défaut (jamais de formulaire chez l'intégrateur).
## REPRISE
Orch seul sur le dépôt (sous-agents en copies de travail). **M1 (L1–L8) en ligne** depuis le
@@ -16,6 +28,54 @@ fusionnés (B2, F, D), puis `4d4adcc` (mineurs de la relecture de F) ; boucle ve
- **F1.2, N1, N1.1, O1** réécrits (amendement de seed sur une proposition ouverte) ;
- **licence** AGPL-3.0 (`76b8e9f`).
**Revue d'Yvv du 02/11 (ergonomie, Propositions seed, tampon des votes, accueil)**, armée d'avance par
« Et pousse. Déploie. ». Décisions d'Yvv du 02/11, de 06 h 26 à 07 h 05 (registre) :
- Propositions seed au **cran 2** ;
- **C devient un quorum** de votants par cran : 12 · 12 · 50 · 50 · 50 en Monnaie libre, 1 à
l'essai. Au-delà, la proportion suit la courbe des cinq crans. L'auteur initial change le quorum
de son article avant le premier vote ;
- l'écran dit, sans prendre de place, combien de « oui » font passer et combien de « non »
bloquent ;
- un vote simulé compte, puis s'efface à l'ouverture de la chaîne (acte « supprime ») ;
- la publication est suspendue jusqu'au premier texte en vigueur.
**Relève le 03/11 à 03 h 38**, sur ordre d'orch racine (dev-63) ; à 05 h 02, dev-63 devient orch de
libreDecision avec le mandat (Yvv, 04 h 58), et cette session devient intégratrice. La session d'avant était
bloquée par le quota depuis le 02/11 à 09 h 51, puis coupée par le redémarrage du poste à 02 h 56.
Les quatre agents sont morts, leurs copies sont intactes, `/tmp` est vidé (captures et bases de
test perdues). Budget : finir S, U, V et H, sans nouveau lot, **un sous-agent à la fois** (compte
partagé avec HCO, qui passe en premier). M6 : l'intégrateur fige le dossier et fait relire,
orch l'exécute sous son mandat.
Ordre de reprise : H, puis S, puis V, puis U. Chaque lot fusionne d'abord le chantier, qui contient
déjà les lots finis. Le contrat du quorum vient de S et sert V et U.
Lots en cours, en copies de travail (`.claude/worktrees/agent-<id>`) :
- **H** (`a6b179c…`, `lot/h-accueil`) : l'accueil. **Fini et fusionné** le 03/11 à 04 h 03
(`a3c0a76`). Boucle verte dans sa copie : 237 tests Rust, 55 vitest, e2e 35 / 35. À faire voir
à Yvv : le titre anglais devient « Making it possible / to decide together » ; les trois points
font 12 px à 360 de large.
- **S** (`a0b2510…`, `lot/s-seed`) : **fini et fusionné** le 03/11 à 05 h 20 (`349c8ed`).
- les Propositions seed : I1, E1 et E2 ouvertes, au cran 2 (ADR 0011) ; publication suspendue sans texte en vigueur ;
- le quorum par cran (ADR 0013) : 12 · 12 · 50 · 50 · 50 en Monnaie libre, 1 à l'essai ; règle « les votants manquants comptent non » (`judged_voters`) ; `PUT /units/{id}/quorum` ; « un vote existe » = `voted_units`, adoptions comprises ;
- la licence `AGPL-3.0-or-later`.
Boucle verte dans sa copie : 265 tests Rust, 56 vitest, e2e 35 / 35. Pour M6, sur une copie de la production : vérifier les propositions qui ont déjà assez de voix (9 au cran 2, 39 au cran 3), qui entreraient au premier balayage.
- **V** (`a78bacc…`, `lot/v-tampon`) : le tampon entre la base des votes et les indexeurs ; « je
vois ce que j'ai fait sans attendre » ; contrôle a posteriori (unique, le dernier qui vaut) ; vote
simulé partout tant que la chaîne est fermée, qui compte, puis s'efface par un acte « supprime ».
ADR 0012 et moteur commités (`e7dda2f`, `ee37c3b`) ; serveur, migration 0010 et tests non
commités (16 fichiers). **Relancé le 03/11 à 05 h 21**, avec en plus :
- la fusion du chantier (H et S) ;
- le quorum compté sur le décompte affiché ;
- `voted_units` étendu à ses états ;
- le défaut de Q11.
- **U** (`adddf06…`, `lot/u-lecteur`) : le lecteur. Page courte ; ordonnancement par poignées en
fin de section ; trois natures de modules ; consoles sans doublon ; déplier ou panneau, une règle ;
la ligne oui / non et le réglage du quorum. Note `UX-lecteur.md` commitée (`d4531da`), 4 fichiers
commencés. En attente de V.
Puis : boucle sur le chantier, relecture indépendante, répétition, dossier d'acte M6, PRÊT.
Yvv relit les quatre textes en ligne. Au prochain tour, avec ses retours :
- N1.1 : G se calcule sur p̃ rapporté à W ;
- étendre la garde de l'amendement à un texte déjà amendé.
@@ -51,7 +111,9 @@ Ce qu'Yvv doit fournir :
| L12 | Objections « redit » et « contredit » : la plus récente des deux propositions n'est pas votable tant que son auteur n'a pas répondu (redit : modifier l'article visé ; contredit : reformuler) ; un message à l'auteur de l'objection dans trustinWallet : lever ou réitérer ; sans réponse sous 3 jours, l'objection est levée. | F | M4 |
| L13 | Coquilles : celle d'un autre que l'auteur attend sa validation (message), puis passe seule après 3 jours ; l'auteur garde la main tant que le texte n'est pas en vigueur ; sur un texte en vigueur, seule une coquille validée le corrige. | F | M4 |
**Liste d'attente** (hors livraison, sauf mot d'Yvv) : l'inscription de chaque vote sur la
**Liste d'attente** (hors livraison, sauf mot d'Yvv) : au bureau, le bas du menu latéral (pastilles
d'ambiance, « Se connecter ») est rogné au bord droit ; sur téléphone avec session, le sceau fixe
chevauche la flèche d'une carte de groupe (vus par le lot H le 03/11, pas comparés à `5cf30e0`) ; l'inscription de chaque vote sur la
chaîne (question stratégique, `docs/recherche/vote-g1-chaine.md`) ; l'affichage dans Ğecko.
## Lots
@@ -78,6 +140,9 @@ chaîne (question stratégique, `docs/recherche/vote-g1-chaine.md`) ; l'affichag
| Q6 | Ğ1Companion ne signe pas encore une transaction construite par une page : quelle extension pour le geste unique ? | **tranché** (01/11) : duniter-connect maintenant ; Ğ1Companion et trustinWallet sur la même interface ; Ğecko par lien et QR |
| Q7 | Le compte qui reçoit les 0,1 Ğ1 : à qui, et que deviennent les sommes ? | **tranché** (01/11) : un compte « libreDecision » créé par Yvv dans Ğecko, les sommes au collectif ; attend son adresse publique |
| Q8 | Le secret du vote tombe par recoupement : la chaîne montre qui vient de voter, et les totaux bougent aussitôt (relecture de `74f96be`) | **tranché** (01/11) : on ne dit rien ; totaux et son propre vote en direct, inchangés |
| Q9 | Sous le quorum, les votants qui manquent comptent-ils comme des « non » ? (Sinon, un « non » peut faire passer un texte en complétant le quorum.) | **tranché** (03/11, formulaire d'orch racine vers 03 h 45) : « Ils comptent comme non » ; au cran 2, quorum 12, 9 oui passent avec 3 non au plus |
| Q10 | Licence : AGPL-3.0 seulement, ou « ou toute version ultérieure » ? | **tranché** (03/11, même formulaire) : « Ou version ultérieure » → `AGPL-3.0-or-later` dans les manifestes (`Cargo.toml`, `web/package.json` et son verrou) et le README ; `LICENSE` inchangé ; confié au lot S |
| Q11 | Un texte entré en vigueur par des votes simulés (9 « pour » au cran 2 dans Monnaie libre) se publie-t-il dans le dépôt des textes ? | **défaut appliqué** (lot V) : non, il est en vigueur sur le site, mais la publication attend un texte qui tient avec les seuls votes prouvés ; bascule en un seul endroit ; posé à orch le 03/11 à 05 h 21 |
Défauts posés par orch, sans question (Yvv peut les corriger) :
- Décisions : « modules restant à voter » = les modules du doc pas encore adoptés par un vote
@@ -93,8 +158,8 @@ Défauts posés par orch, sans question (Yvv peut les corriger) :
## Actes
- M1 : **exécuté** le 30/10/2026, 15 h 29 – 15 h 52 (`actes/2026-10-30-m1-mise-en-ligne.md`).
- M3a (L10) : **figé** sur `71819f9` (`actes/2026-10-30-m3-inertie-cinq-crans.md`), attend « déploie ».
- M2 + M3a (L9 et L10) : **figé** sur `74f96be` (`actes/2026-10-31-m2-vote.md`), le vote par la chaîne éteint ; remplace M3a s'il est armé.
- M3a (L10) : **caduc, emporté par M4** (`actes/2026-10-30-m3-inertie-cinq-crans.md`) : jamais exécuté, `71819f9` est en production depuis M4.
- M2 + M3a (L9 et L10) : **caduc, emporté par M4** (`actes/2026-10-31-m2-vote.md`) : jamais exécuté, `74f96be` est en production depuis M4.
- M4 (L9 à L13) : **exécuté** le 01/11/2026, 22 h 52 – 23 h 40 (`actes/2026-10-31-m4-vote-modules-objections.md`) ; M2 et M3a n'ont plus d'objet.
- M5 (lot G, articles des règles, licence) : **exécuté** le 02/11/2026, 02 h 53 – 03 h 10 (`actes/2026-11-02-m5-retenue-textes-regles.md`).
@@ -106,15 +171,5 @@ Liste d'attente (relecture de `033b331+4d4adcc`, après M4) :
- `place_at_end` coupe toujours le même intervalle : au 52e ajout dans une section, les positions se confondent ;
- `publish.rs` : articles sur `tally`, modules sur `shown_tally` (identiques aujourd'hui).
À dire à Yvv : dans le groupe d'essai (C = 1), dès 16 membres une voix seule fait passer un texte,
la garde B^W passant sous la précision du calcul (ADR 0007). Monnaie libre (C = 50) n'est pas
concernée. Pour deux voix dans l'essai quel que soit W : C = 2.
À demander à Yvv (relecture de `cd7e683`) : sur une version retenue par une objection, ni retirer
son vote ni passer à « contre » ; à la levée, l'adoption tourne aussitôt. Le garder, ou permettre de
retirer son vote et de voter « contre » sur une version retenue ? Défaut : tel quel (ADR 0010).
Ensuite : Chaque mise en ligne (M1 à M4) attend « déploie » d'Yvv et une relecture
indépendante inscrite. La migration « Raison d'être » touche la base de production : elle ne
remplace le Préambule que s'il est intact (texte de départ, 0 vote, aucune correction), et le
dossier d'acte de M1 le dit.
Chaque mise en ligne attend « déploie » d'Yvv, ou le mandat d'orch, et une relecture indépendante
inscrite.