Compare commits

...
34 Commits
Author SHA1 Message Date
YvvandClaude Opus 5.5 de1b7eb5d7 Fusion du lot T3c (relecture de e7ab82f) : F1.2 et N1.1 écrivent le terme défini « à la participation habituelle » ; « sous le quorum de l'article […] que si ce quorum avait voté », « la part exigée », « tant qu'elle repose sur moins de 5 propositions », « ramenée entre 1 % et 50 % » ; grille des tests étendue aux médianes hors bornes et aux quorums d'auteur ; liste fermée des phrases (t3c-liste-fermee.md) ; les mêmes amendements, to 0c3b800b… et 8107c5fc…
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-03 19:57:08 +01:00
YvvandClaude Opus 5.5 3b38280169 Lot T3c : boucle complète verte sur 42c803e (fmt, clippy, 316 tests Rust, npm ci, check 0 / 0, 78 tests unitaires, build, 42 e2e du premier coup sous le verrou) ; ligne au journal de CONTROLES.md
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-03 19:55:42 +01:00
YvvandClaude Opus 5.5 42c803e544 Lot T3c : t3c-liste-fermee.md (les 24 entrées de F1.2 et les 15 de N1.1, chacune avec ce qu'elle affirme et le test qui la vérifie sur sa grille, ou « rien à vérifier » ; les quatre mutations vues rouges) ; textes-quorum-seed.md (« Après la relecture de e7ab82f » : chaque phrase avant / après et pourquoi, en fr, en, es, l'exemple 7 224 / 40 ; les blocs F1.2 et N1.1, les empreintes, les raisons, les longueurs, les tableaux des chiffres et des règles ; points 11 à 13)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-03 19:48:08 +01:00
YvvandClaude Opus 5.5 077c87c9db Lot T3c : F1.2 et N1.1 écrivent le terme défini, « à la participation habituelle » (fr, en, es), à la place de « comme d'habitude », faux quand la médiane sort de ses bornes ; N1.1 : « sous le quorum de l'article […] que si ce quorum avait voté », « La part exigée […] au-delà de ce quorum », « ou le quorum de l'article s'il en manque », « Tant qu'elle repose sur moins de 5 propositions », « Elle est ramenée entre 1 % et 50 % » ; les mêmes amendements 2026-11-03-f1-2-chiffres (to 0c3b800b…) et -n1-1-chiffres (to 8107c5fc…), leurs raisons ; le _source du seed
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-03 19:48:08 +01:00
YvvandClaude Opus 5.5 3383f28739 Lot T3c : les tests d'abord, rouges sur le texte de e7ab82f (8 tests) — « comme d'habitude » contre le terme défini « participation habituelle » ; une grille commune (grid, 85 100 cas : W de 100 à 10 000 000, médianes sous 1 % et au-dessus de 50 % de W ramenées par Participation::of, chaque quorum d'auteur de 2 à W jusqu'à 1 000, les cinq crans) à la place d'as_usual_grid, qui sautait les médianes hors des bornes ; l'écart entre la valeur bornée et la médiane (W 7 224, médiane 40, cran 2 : 28 « pour » sur 40, pas 27) ; la part exigée qui baisse au-delà du quorum de l'article ; « une seule voix » sur la grille ; quorum.rs : la participation et G inchangés par le quorum d'un article, le cran 3 d'un nouvel article
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-03 19:48:08 +01:00
YvvandClaude Opus 5.5 ca0c729481 M8 : relecture de e7ab82f à reprendre (« comme d'habitude » contre la participation habituelle bornée), lot T3c lancé ; dossier et tableau
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-03 19:17:10 +01:00
YvvandClaude Opus 5.5 aaacfaa332 Acte M8 : image de contrôle de e7ab82f (18 h 56 - 19 h 01, sortie 0), prémisse 5 ; relecture en cours
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-03 19:01:46 +01:00
YvvandClaude Opus 5.5 77bc79d9ed Acte M8 : répétition réseau coupé sur e7ab82f (18 h 54), prémisses, commande sur e7ab82f ; relecture et image en cours ; non figé
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-03 18:57:12 +01:00
YvvandClaude Opus 5.5 d17a5f6d92 Acte M8 : en tête, pour Yvv, les quatre phrases avant / après et l'exemple retiré (lots T3 et T3b) ; non figé
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-03 18:56:06 +01:00
YvvandClaude Opus 5.5 e7ab82f48f Fusion du lot T3b (relecture de 2ce2028) : la phrase de G de N1.1 vraie pour tout W et tout quorum (« au-delà du quorum […] quand le groupe vote comme d'habitude ») ; « autant de « pour » que si le quorum avait voté » ; le test de « 100 votants » honnête ; l'amendement 2026-11-03-n1-1-chiffres repris lui-même (to 7f62fd42…)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-03 18:47:37 +01:00
YvvandClaude Opus 5.5 a8939b20c5 Lot T3b : boucle complète verte sur 582d6ba (fmt, clippy, 314 tests Rust, check 0 / 0, 78 tests unitaires, build, 42 e2e au second passage, le premier coupé par un changement de réseau du poste : C8 et C32 sur net::ERR_NETWORK_CHANGED) ; ligne au journal de CONTROLES.md
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-03 18:45:32 +01:00
YvvandClaude Opus 5.5 582d6babd0 Lot T3b : textes-quorum-seed.md (« Après la relecture de 2ce2028 » : la phrase de G et celle du quorum avant / après et pourquoi, en fr, en, es ; le test des nombres et « 100 votants » ; chaque phrase relue ; la nouvelle empreinte de N1.1, la raison ; les blocs de N1.1, les longueurs, les tableaux des chiffres et des règles)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-03 18:28:50 +01:00
YvvandClaude Opus 5.5 581f7c3c9e Lot T3b : N1.1, la phrase de G vraie pour tout W et tout quorum (fr, en, es) — « G se calcule pour que la part exigée, au-delà du quorum, soit exactement celle du cran quand le groupe vote comme d'habitude […], où s est cette part du cran (60, 67, 75, 83 ou 90 %) » ; « il faut autant de « pour » que si le quorum avait voté » en français ; l'amendement 2026-11-03-n1-1-chiffres repris lui-même (to 7f62fd42…, sa raison), F1.2 inchangé ; le _source du seed
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-03 18:28:50 +01:00
YvvandClaude Opus 5.5 1fe31f567b Lot T3b : les tests d'abord, rouges sur le texte de T3 (2ce2028) — la phrase de G de N1.1 vraie pour tout W et tout quorum, sur la grille de « comme d'habitude » (as_usual_grid, partagée avec the_share_of_a_level_as_usual_is_asked_beyond_the_quorum) ; « autant de « pour » » en français ; le test des nombres honnête sur « 100 votants » (un paramètre, 2 × voteFloor ; la participation de référence ne vaut 100 votants qu'entre 200 et 10 000 membres, un test à part)
Vus rouges sur le texte de T3 : every_number_of_the_quorum_texts_is_the_engine_s (les cinq parts
de la phrase de G manquent), g_gives_the_share_of_the_level_beyond_the_quorum_when_the_group_votes_as_usual,
the_texts_of_lot_t3_change_these_phrases_only, under_the_quorum_it_takes_as_many_for_as_if_the_quorum_had_voted.
the_reference_turnout_is_a_parameter_the_bounds_bring_back décrit le moteur : vert d'emblée, et
vu tomber quand on lui fait dire « de 100 à 10 000 membres » (W 100).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-03 18:28:43 +01:00
YvvandClaude Opus 5.5 a4d4b15bc1 M8 : relecture de 2ce2028 à reprendre (phrase de G de N1.1), lot T3b lancé ; dossier et tableau
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-03 18:13:10 +01:00
YvvandClaude Opus 5.5 c05319dc4a Acte M8 : l'image de contrôle (17 h 55 - 18 h 01, sortie 0), prémisse 5
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-03 18:02:44 +01:00
YvvandClaude Opus 5.5 cc24e6f487 Acte M8 (lot T3) : dossier préparé, répétition faite (17 h 54), relecture en cours ; non figé
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-03 17:56:52 +01:00
YvvandClaude Opus 5.5 953637ffc4 Tableau : lot T3 fusionné (0b4923f, 2ce2028), boucle en cours, copie de production demandée pour M8
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-03 17:45:42 +01:00
YvvandClaude Opus 5.5 2ce2028eb2 textes-quorum-seed.md : la phrase de N1.1 venait de l'ordre de l'intégrateur, pas d'orch
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-03 17:44:46 +01:00
YvvandClaude Opus 5.5 0b4923f12a Fusion du lot T3 : aucun chiffre daté dans un texte voté (Yvv, 03/11) ; l'exemple de N1.1 retiré ; « sous le quorum […] il faut autant de voix pour que si le quorum avait voté » ; la part du cran « comme d'habitude » au-delà du quorum (N1.1, F1.2) ; F1.1 laissé ; amendements gardés qui suivent ceux de T2 ; section « Lot T3 » du fichier de relecture
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-03 17:44:39 +01:00
YvvandClaude Opus 5.5 7147cb4735 Lot T3 : boucle complète verte sur b2d653e (fmt, clippy, 312 tests Rust, check 0 / 0, 78 tests unitaires, build, 42 e2e au second passage, le premier coupé par un changement de réseau du poste) ; ligne au journal de CONTROLES.md
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-03 17:42:44 +01:00
YvvandClaude Opus 5.5 b2d653ea4f Lot T3 : textes-quorum-seed.md, l'en-tête compte juste (trois phrases, deux de N1.1 et une de F1.2, et l'exemple)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-03 17:32:09 +01:00
YvvandClaude Opus 5.5 6db4f900a7 Lot T3 : textes-quorum-seed.md (section « Lot T3 » : la phrase d'Yvv du 03/11, les points tranchés, chaque phrase avant / après et pourquoi, F1.1 relu et laissé, la garde en production et la file de Monnaie libre ; les blocs F1.2 et N1.1 à jour ; point 3 tranché, points 10 et 11 ; les lignes des chiffres retirés ôtées) ; CLAUDE.md (les tests des textes)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-03 17:27:30 +01:00
YvvandClaude Opus 5.5 aba86200c6 Lot T3 : N1.1 et F1.2 sans chiffre daté, chaque phrase vraie pour tout W et tout quorum (fr, en, es) — l'exemple de N1.1 retiré ; « sous le quorum, les votants qui manquent comptent comme « non », et il faut autant de voix pour que si le quorum avait voté » ; la part du cran « comme d'habitude » au-delà du quorum (N1.1, F1.2) ; F1.1 laissé ; amendements gardés 2026-11-03-f1-2-chiffres et -n1-1-chiffres qui suivent ceux de T2 (dépassés) ; le _source du seed le dit
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-03 17:27:30 +01:00
YvvandClaude Opus 5.5 03a7e19da0 Lot T3 : les tests d'abord, rouges sur les textes de T2 (aucun chiffre daté : l'exemple de N1.1 fait échouer le test des nombres ; la phrase du quorum de N1.1 vraie pour tout quorum, sur une grille de W, de quorums, de crans et de participations ; « comme d'habitude » au-delà du quorum seulement ; B^W ne compte jamais dans la toile ; l'amendement gardé qui suit celui de T2) ; textes de T2 gardés dans tests/fixtures/seed-quorum-t2.json ; wot::PLAUSIBLE public
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-03 17:22:37 +01:00
YvvandClaude Opus 5.5 58c2c5d2ab Tableau : lot T3 en cours (17 h 02), sur l'ordre T3 d'orch et la réponse d'Yvv du 03/11
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-03 17:02:23 +01:00
YvvandClaude Opus 5.5 8c1e7af12f Purge après M7b (ordre d'orch PURGE-LD) : bases de test des sous-agents, restes des tests cargo, sept copies de travail et 13 branches des lots fusionnés ; tableau et HANDOFF
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-03 12:31:35 +01:00
YvvandClaude Opus 5.5 a83f1af5f9 HANDOFF : M7b en ligne, aucun lot en cours, ce qui reste pour la purge ; tableau : la purge listée pour orch
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-03 12:30:19 +01:00
YvvandClaude Opus 5.5 fe6d0c99cf M7b exécuté (6f6197c en ligne, pipeline 41) : copies de l'intégrateur retirées (12 h 28), tableau ; aucun lot en cours
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-03 12:29:51 +01:00
YvvandClaude Opus 5.5 ba6a051fd1 Acte M7b exécuté (12 h 07 - 12 h 26, pipeline 41) : production sur 6f6197c, comptes identiques, copies retirées
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-03 12:27:12 +01:00
YvvandClaude Opus 5.5 16ffae514e Tableau : M7b figé (6f6197c : ok, 12 h 06), PRÊT M7b à orch (12 h 07) ; liste d'attente de la relecture de M7b
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-03 12:07:25 +01:00
YvvandClaude Opus 5.5 23d666195c Acte M7b figé sur 6f6197c : relecture « 6f6197c : ok » inscrite (12 h 06), trois inexactitudes du dossier corrigées, mineurs en liste d'attente
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-03 12:07:05 +01:00
YvvandClaude Opus 5.5 8e3aaa313b Acte M7b : relecture lancée à 11 h 51 ; tableau : U2 fusionné (6f6197c), M7b en préparation
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-03 11:52:11 +01:00
YvvandClaude Opus 5.5 d56b978af4 Acte M7b (lot U2, les mineurs du lecteur) en préparation sur 6f6197c : répétition sur une copie de la production de 11 h 40 (0 écriture), recette écran des points visibles (bureau, téléphone, membre, administrateur), boucle et image
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-03 11:51:31 +01:00
14 changed files with 2730 additions and 188 deletions
+4 -2
View File
@@ -71,8 +71,10 @@ crates/
# quorum.rs (quorums par cran, la route, « un vote existe », l'amendement) ·
# fixtures/seed-production-2026-11-02/ (le seed que la production fait tourner :
# I1/E1/E2 en vigueur, pour rejouer les amendements sur une base comme elle) ·
# seed_quorum_texts.rs (lots T et T2 : F1.1, F1.2, N1.1 ; fixtures/seed-quorum-m6b.json,
# leurs textes depuis M6b, pour rejouer T2 sur une base comme la production)
# seed_quorum_texts.rs (lots T, T2 et T3 : F1.1, F1.2, N1.1 ; aucun chiffre daté, chaque
# phrase vraie pour tout W et tout quorum ; fixtures/seed-quorum-m6b.json et
# seed-quorum-t2.json, leurs textes depuis M6b et M6c, pour rejouer T2 et T3 sur une
# base comme la production)
seeds/ # acte-engagement-certification.json (trilingue, 33 articles, aucun en vigueur ;
# I1/E1/E2 Propositions seed au cran 2 (seed::SEED_PROPOSAL_LEVEL), inertie 3 ailleurs ;
# modules en vigueur sans vote : le titre à 4, l'ordre de chaque section à 2 ;
+13 -3
View File
@@ -1,6 +1,6 @@
# HANDOFF — libreDecision
> Dernière mise à jour : 2026-11-03 à 11 h 08, intégrateur libredecision-d4 (orch : dev-63, session
> Dernière mise à jour : 2026-11-03 à 12 h 31, intégrateur libredecision-d4 (orch : dev-63, session
> racine /DEV, mandat « déploie » et « pousse » du 03/11 au 08/11). État vivant : le tableau
> `docs/chantiers/acte-certification/tableau.md`.
@@ -32,8 +32,18 @@
l'interface sans « presque l'unanimité ». Pour Yvv (`textes-quorum-seed.md`, section « Lot T2 ») :
F1.2 « tant que l'article ne garde la trace d'aucun vote » (point 8) ; N1.1 « pas un nombre minimal de
votants », faux pour un quorum d'auteur bas.
- **En cours** : lot U2 (les mineurs d'interface des relectures de M7 et M6c, lancé à 11 h 08). Listes
d'attente : au tableau.
- **M7b en ligne** depuis le 03/11 à 12 h 23 (`6f6197c`, pipeline 41 ;
`actes/2026-11-03-m7b-lecteur-mineurs.md`) : les mineurs du lecteur (lot U2) : cibles de 44 px sur
téléphone, les trois lectures entières, « Proposer cet ordre » dit pourquoi il est éteint, une
information à un seul endroit dans le vote déplié, l'en-tête « 3 Propositions seed · 32 propositions en
cours », la pastille d'un changement d'inertie de module.
- **Aucun lot en cours** (03/11 à 12 h 30) : H, S, V, T, U, T2 et U2 sont en ligne ; rien ne se lance sans
ordre d'orch. Listes d'attente (relectures de M6, M6c, M7, M7b) : au tableau, section Actes. Le plus
visible : le vote d'un changement d'inertie de module ne dit pas le cran visé.
- **Purge faite** le 03/11 à 12 h 30-12 h 31 (ordre d'orch PURGE-LD) : les sept copies de travail des lots
fusionnés et leurs 13 branches (`-d`, rien poussé) ; les bases de test et captures des sous-agents sous
`/tmp` (synthétiques, aucune de la production) ; 688 restes des tests cargo et scripts e2e. Restent
`/tmp/ld-e2e`, son verrou et `/tmp/ld-h-shots` (captures du lot H, hors de l'ordre).
## Avant le 03/11
+182
View File
@@ -0,0 +1,182 @@
# Acte — Mise en ligne M7b (les mineurs du lecteur, lot U2)
Classe : déploie
Projet : libreDecision Date : 2026-11-03
**État : EXÉCUTÉ** le 03/11 de 12 h 07 à 12 h 26 — **FIGÉ** sur `6f6197c` (`6f6197cc231837df55d6b3e1986f61be5d708a1f`) le 03/11 à 12 h 07 — préparé
par l'intégrateur libredecision-d4 ; exécuté par orch (dev-63) sous son mandat (« déploie » et « pousse »,
du 03/11 au 08/11). Relecture indépendante : « 6f6197c : ok » (prémisse 3).
## Intention
Mettre en ligne le lot U2 : les mineurs d'interface des relectures de M7 (`b2e597b`) et de M6c
(`84f015a`), défaut retenu par orch le 03/11 à 09 h 45 (U2 après T2).
1. Cibles d'au moins 44 px sur téléphone : « Tout déplier », « Autres versions », « Fixer ce quorum », et
tous les gestes du vote déplié et du réordonnancement.
2. Les trois lectures (« En vigueur », « Si les bien cotées passent », « Si tout passe ») passent à la
ligne sur téléphone au lieu de cacher « Si tout passe ».
3. « Proposer cet ordre » éteint dit pourquoi : « C'est l'ordre en vigueur : déplace au moins un
article. »
4. Une information à un seul endroit dans le vote déplié : l'inertie dite une fois (ses crans dans
« Inertie ») ; la ligne d'une Proposition seed s'efface sous son vote déplié ; l'autre version d'un
article n'est plus redite dans « Autres versions ».
5. L'en-tête compte ce que montre la liste : « 0 article en vigueur · 3 Propositions seed · 32
propositions en cours ».
6. Un changement d'inertie proposé sur un ordre ou sur le titre a sa pastille sur la ligne du module.
7. `settings.reading` dit « au-delà du quorum » (fr, en, es) ; l'anglais en un seul vocabulaire (« for »,
« against », « favour ») ; le commentaire de `crates/ld-engine/src/threshold.rs` écrit juste, et un test.
## Ce qui part
Version `6f6197c`, qui contient la version en ligne `84f015a`. **L'interface**, plus un commentaire et un
test dans `crates/ld-engine` ; le reste est documentation (`CONTROLES.md`, `UX-lecteur.md`, `CLAUDE.md`,
actes, tableau, HANDOFF). `git diff 84f015a 6f6197c -- crates/ld-server crates/trustin-access seeds docker
.woodpecker .env data` → **vide** (vu par l'intégrateur à 11 h 39 et par orch à 11 h 40) : le serveur est
celui qui est en ligne.
## Ce que l'acte écrit dans la base de production (donnée runtime)
**Rien.** Aucune migration, aucun amendement, aucun code serveur nouveau. Au démarrage, comme à chaque
démarrage depuis M6, la file de publication suspendue reporte ses lignes en attente (`next_at`).
## Répétition
**Faite le 03/11 de 11 h 43 à 11 h 44**, avec le serveur de `6f6197c` (binaire de la boucle, copié en
`m7b/ld-server-6f6197c`), sur une copie de la copie de production prise par orch à 11 h 40 min 27 (santé
`84f015ad`), publication vers un dépôt nu local (`m7b/repetition.sh` ; journal `m7b/repetition-m7b.log`,
scratchpad de l'intégrateur). Deux démarrages.
- `m7b/counts.sh` avant et après le second démarrage : **identiques**.
- **La base entière comparée** (`.dump`) : seules changent les 10 lignes de la file en attente, par leur
`next_at`.
- Journal : « publication suspended », aucun amendement, aucune ligne ERROR ni WARN ; 0 commit vers le
dépôt des textes.
## Recette écran
**Faite le 03/11 de 11 h 45 à 11 h 50**, sur d'autres copies de la copie de 11 h 40, interface de
`6f6197c`, connexion de développement (identités `dev:` dans ces copies seulement), bureau 1360 × 900 et
téléphone (Pixel 7), `fr-FR`, vue membre et vue administrateur. Scripts `m7b/recette.mjs` et
`m7b/probe.mjs` ; rapport `m7b/shots/rapport.json` ; captures dans
`/tmp/claude-1001/-home-yvv-Documents-PROD-DEV-libreDecision/d0a7108b-7f2f-484a-bcb0-de339238199d/scratchpad/m7b/shots/`,
regardées. `recette.mjs` : 12 étapes, **4 en échec** par délai dépassé (« 2 les trois lectures » et
« 1-4b » sur bureau et téléphone) : mes sélecteurs, pas l'interface (les lectures sont des `radio`, pas
des `button` ; une ligne à deux versions s'ouvre d'abord sur ses variantes). Ces mesures ont été refaites
par `probe.mjs` (sortie dans le transcript de l'intégrateur, non conservée en fichier) : téléphone, rangée
des lectures 370 / 370, « Tout déplier » 44 px, vote de la variante 1.0.0 sans « Autres versions » ni
0.4.0, gestes du vote 44 px ; bureau, rangée 412 / 412, « Tout déplier » 36 px. Le relecteur les a
refaites de son côté, vraies (prémisse 3).
| Point | Mesuré sur les données de production | Captures |
|---|---|---|
| 1 | Téléphone : « Tout déplier » 44 px ; dans le vote déplié, Pour, Contre, « Réglages de la formule », « Coquilles… » 44 px ; « Proposer cet ordre » 44 px ; administrateur : « Fixer ce quorum » 44 px, le champ 44 px. (Bureau : 36 à 39 px, la règle vaut pour le téléphone.) | `telephone-1c-admin-quorum`, `telephone-4b-deux-versions`, `telephone-3-ordre-inchange` |
| 2 | Téléphone : la rangée des lectures tient (370 px de contenu pour 370 visibles ; avant M7b, 412 pour 370 selon la relecture de M7, non remesuré ici), « Si tout passe » entier sur sa ligne ; la page ne déborde pas. | `telephone-5-entete` |
| 3 | « Proposer cet ordre » éteint, et la phrase « C'est l'ordre en vigueur : déplace au moins un article. » visible (bureau et téléphone). | `*-3-ordre-inchange` |
| 4 | Vote déplié de Raison d'être : « Inertie · ▮▮▯▯▯ 2 / 5 · basse » une fois (l'autre « 2 / 5 » est la ligne d'historique) ; la ligne « 0 pour · 0 contre · 9 oui sur 12 » n'est plus redite au-dessus. Rencontre physique (deux variantes) : le vote de la variante 1.0.0 ne redit pas l'autre (0 « Autres versions », 0 mention de 0.4.0). | `*-4a-seed-deplie`, `*-4b-deux-versions` |
| 5 | « 0 article en vigueur · 3 Propositions seed · 32 propositions en cours » dans la lecture « En vigueur » (avant : « 35 propositions en cours » ; la production n'a aucun ordre proposé ouvert, l'écart de 35 à 32 est celui des 3 Propositions seed, comptées à part). | `*-5-entete` |
| 6 | Aucun changement d'inertie de module ouvert en production : prouvé par C38 sur une base de test, pas vu sur ces données. | — |
Vu en passant, **pas du lot U2, déjà en ligne, en liste d'attente** :
- sur bureau, le bas du menu latéral (langues, ambiances, « Se déconnecter ») déborde au bord droit
quand le nom affiché est long (« Recette U2 bur… » : la quatrième pastille et « Se déconnecter »
coupés ; « Sonde bur… » : tout tient) ;
- sur téléphone, le sceau fixe chevauche « Réordonner » en bas à droite.
Aussi : la carte du document sur la page du groupe compte toujours le total du serveur (35, Propositions
seed comprises) ; changer ce compte toucherait le serveur (rapport de U2).
## Effet attendu
- Le lecteur change pour tout le monde sur ces sept points ; les données, les votes, les textes et la
publication ne changent pas.
- Le dépôt des textes reste à `9e0f45a`.
Irréversibilité : **aucune** côté données ; le code se remet en arrière.
## Avant — prémisses vivantes
1. La production sert `84f015a` : santé `"build":"84f015ad"` ; `prod/main` → `84f015a`.
2. `git diff 84f015a 6f6197c -- crates/ld-server crates/trustin-access seeds docker .woodpecker .env data` →
vide.
3. La relecture indépendante de `6f6197c`, inscrite « ok » dans `~/harness/etat/relectures.json`.
**Faite** : sous-agent neuf, sans le contexte de l'intégrateur, sur `84f015a..6f6197c`, lancée à
11 h 51, rendue à 12 h 05, inscrite à 12 h 06 (transcript
`~/.claude/projects/-home-yvv-Documents-PROD-DEV-libreDecision/d0a7108b-7f2f-484a-bcb0-de339238199d/subagents/agent-afbf95d4047008567.jsonl`,
dernière ligne « 6f6197c : ok »). Aucun bloquant, aucun « à reprendre ». Ce qu'elle a exécuté : le diff
entier ; e2e 42 / 42 du premier coup (11 h 58 à 12 h 01, binaire identique octet pour octet) ; vitest
78 / 78 ; tests du moteur ; sondes Playwright sur deux copies de la copie de 11 h 40 (bureau, Pixel 7,
360 et 320 px ; membre et administrateur ; fr, en, es ; écritures dans le groupe d'essai pour voir la
pastille d'un changement d'inertie de module) : les neuf points tenus, rien de cassé (vote simulé,
objections, panier) ; sa propre répétition (seules les `next_at` de la file) ; le retour.
Mineurs, **liste d'attente** :
- le vote d'un changement d'inertie de module (ouvert par la nouvelle pastille) ne dit pas le cran
visé : seulement « inertie 2 / 5 · basse », le cran où il se vote ; « vers 3 / 5 » n'est que dans
l'étiquette pour lecteur d'écran (`VoteFold.svelte:167`, `:177` ; `OrderLine.svelte:58-61`,
`TitleBar.svelte:53-56`). Défaut déjà là dans `84f015a`, plus accessible depuis U2 ; aucun
changement de ce type ouvert en production ;
- l'en-tête ne suit la liste qu'en lecture « En vigueur » (`+page.svelte:159-160`) : nuancer
`UX-lecteur.md` ou suivre la lecture ;
- le commentaire du test moteur (`threshold.rs`, « 85 % of the quorum ») parle des paramètres de
référence, pas du cran 2 ;
- trois inexactitudes de ce dossier (4 étapes de recette en échec non dites, « 35, ordres compris »,
la phrase de la vérification après) : **corrigées** ;
- les copies de production de l'intégrateur : à retirer après l'acte (prévu).
Non vérifié par elle : sonic (image, témoin `deploying`, santé), la mesure « avant » sur `84f015a`,
les ambiances sombres, un vrai lecteur d'écran. Ses copies de la base de production sont supprimées.
4. Boucle verte sur `6f6197c`, le 03/11 de 11 h 39 à 11 h 43, du premier coup (journal `m7b/loop.log`) :
fmt, clippy `-D warnings`, 302 tests Rust, svelte-check 0 / 0, 78 vitest, build, e2e 42 / 42 (11 h 40 à
11 h 43). Image de production construite de 11 h 43 à 11 h 45, sortie 0 (302 tests Rust « ok »,
svelte-check 0 / 0, 78 vitest, build) ; image de contrôle retirée à 11 h 50.
5. Sur sonic, aucun témoin `/opt/libredecision-app/deploying`.
## Commande exacte
```sh
cd /home/yvv/Documents/PROD/DEV/libreDecision
git push prod 6f6197cc231837df55d6b3e1986f61be5d708a1f:main
```
## Vérifications après
- [x] Santé vue de l'extérieur → `"build":"6f6197cc"`.
- [x] Journaux : « publication suspended … waiting=10 », aucune ligne ERROR ni WARN, aucun amendement.
- [x] Le paquet JS servi, vu de l'extérieur, contient « changement d'inertie proposé » et « au-delà du
quorum » (nouveaux dans `6f6197c` ; « déplace au moins un article » existait déjà dans `84f015a`).
- [x] Sur une copie fraîche : comptes de `counts.sh` identiques à la copie d'avant ; `integrity_check` ok.
- [x] Le dépôt des textes reste à `9e0f45a`.
## Retour
`docker tag libredecision-app:previous libredecision-app:latest`, puis
`cd /opt/libredecision-app && docker compose up -d --force-recreate`. `previous` sera `84f015a`, le même
serveur, qui attend aussi le premier texte pour publier : rien à couper, aucune donnée à reprendre.
## Exécution
Acte exécuté le 03/11/2026, 12h07-12h26, par orch (session dev-63, e66db8ca), sous mandat « déploie »
(03/11 → 08/11, `~/harness/etat/mandats.json`).
- **Prémisses** (12 h 07 min 36 s) : santé `"build":"84f015ad"` ; `prod/main` → `84f015a` ; diff
`84f015a..6f6197c` sur `crates/ld-server crates/trustin-access seeds docker .woodpecker .env data` vide ;
« 6f6197c : ok » inscrit (12 h 06) ; aucun témoin `deploying` sur sonic.
- **Copie d'avant** (12 h 07 min 45 s) : `integrity_check` ok, `foreign_key_check` vide ; identities 1,
votes 0, revisions 119, translations 144, inertia_changes 10, file `pending=10 done=13`.
- **Poussée** (12 h 08) : la commande du dossier, telle quelle → `84f015a..6f6197c 6f6197cc… -> main`.
- **Pipeline 41** : créé à 12 h 08 min 13 s ; santé `"build":"6f6197cc"` dès 12 h 12 min 39 s ; `success`
à 12 h 23 min 26 s (app puis maquette ; image `latest` 2637acd8a06e construite à 12 h 12 min 04 s).
- **Redémarrage à froid** (12 h 23 min 46 s) : « libreDecision listening bind=0.0.0.0:8002
build=6f6197cc », puis « publication suspended: no article in force … waiting=10 » ; aucune ligne
ERROR, WARN ni amendement. Santé ensuite `{"build":"6f6197cc","ok":true}`.
- **Copie d'après** (12 h 24 min 03 s) : `integrity_check` ok, `foreign_key_check` vide ; sortie de
`counts.sh` **identique à la ligne près** à celle d'avant (migrations 1 à 11, quorums
`[12,12,50,50,50]` / `[1,1,1,1,1]`, 22 amendements du seed, file `pending=10 done=13`).
- **Paquet servi** (12 h 24 min 18 s, `curl -4` depuis le poste, 19 nœuds et 40 morceaux) :
« changement d'inertie proposé » et « au-delà du quorum » présents, chacun dans un fichier.
- **Dépôt des textes** : `main` → `9e0f45a9e8d4af356a0c42daa5f4fb9eb9e6dfb3`, inchangé.
- **Retour** : `previous` = 7cc0a31053dc (construite à 10 h 53 min 40 s, `84f015a`) ; le conteneur tourne
sur `latest` 2637acd8a06e.
- **Copies retirées** à 12 h 26 min 19 s : `/tmp/ld-m7b-copie` (11 h 40, celle de la répétition),
`/tmp/ld-m7b-avant`, `/tmp/ld-m7b-apres`.
- **Branche locale** : `main` avancée `84f015a..6f6197c` à 12 h 26 min 19 s.
- Écart au déroulé : aucun.
- Copies de l'intégrateur retirées le 03/11 à 12 h 28 (scratchpad de libredecision-d4) : `m7b/base`,
`m7b/rep` (répétition), `m7b/recette-apres`, `m7b/recette-sonde` (recette écran) et les deux `.dump`.
Plus aucune base dans ce scratchpad.
+237
View File
@@ -0,0 +1,237 @@
# Acte — Mise en ligne M8 (aucun chiffre daté dans les textes votés, lots T3 et T3b)
Classe : déploie
Projet : libreDecision Date : 2026-11-03
**État : PRÉPARÉ, non figé** (relecture de `e7ab82f` à reprendre ; lot T3c en cours) — sur `e7ab82f`
(`e7ab82f48f41f52b3f31e322553f7cf18bc21601`) ; préparé par l'intégrateur libredecision-d4 ; exécuté par
orch (dev-63) sous son mandat (« déploie » et « pousse », du 03/11 au 08/11).
## Pour Yvv : ce que tu liras de changé
Quatre phrases, avant / après (le français fait foi), et un exemple retiré. Toutes dans les textes votés
de départ, dans les deux groupes ; F1.1 n'est pas touché.
1. **N1.1, la phrase du quorum** (premier paragraphe) :
- avant : « Chaque cran a aussi son quorum, qui n'est pas un nombre minimal de votants : sous le quorum,
les votants qui manquent comptent comme « non ». »
- après : « Chaque cran a aussi son quorum : sous le quorum, les votants qui manquent comptent comme
« non », et il faut autant de « pour » que si le quorum avait voté. »
2. **N1.1, l'introduction des cinq crans** :
- avant : « **Les cinq crans** : le quorum dans Monnaie libre, la part exigée quand le groupe vote comme
d'habitude, puis quand tout le monde vote, et ce qui est à ce cran au départ. »
- après : « **Les cinq crans** : le quorum dans Monnaie libre, la part exigée au-delà du quorum, quand le
groupe vote comme d'habitude, puis quand tout le monde vote, et ce qui est à ce cran au départ. »
3. **N1.1, la phrase de G** (dernier paragraphe) :
- avant : « **G** se calcule pour que la part exigée, à la participation habituelle, soit exactement celle
du cran : `G = ln(1 − (s − M)/(1 − M)) / ln(p̃)`, où s est la part exigée comme d'habitude et p̃ la
participation habituelle divisée par W. »
- après : « **G** se calcule pour que la part exigée, au-delà du quorum, soit exactement celle du cran
quand le groupe vote comme d'habitude : `G = ln(1 − (s − M)/(1 − M)) / ln(p̃)`, où s est cette part du
cran (60, 67, 75, 83 ou 90 %) et p̃ la participation habituelle divisée par W. »
4. **F1.2, « Par défaut »** :
- avant : « Le cran par défaut est le 3 (moyenne) : M = 55 %, un quorum de 50 dans Monnaie libre, et le
groupe demande 75 % de « pour » quand il vote comme d'habitude. Tout nouvel article commence à ce
cran. »
- après : « Le cran par défaut est le 3 (moyenne) : M = 55 %, un quorum de 50 dans Monnaie libre, et,
au-delà du quorum, le groupe demande 75 % de « pour » quand il vote comme d'habitude. Tout nouvel
article commence à ce cran. »
5. **N1.1, l'exemple retiré** (le paragraphe qui suivait la phrase de G ; rien ne le remplace) : « Exemple :
avec 7 224 membres et une participation habituelle de 120 votants, quand 120 personnes votent, il faut 72,
81, 90, 100 ou 108 voix pour, du cran 1 au cran 5 ; au cran 3, 75 % des 120 votants, soit 90. Sous le
quorum, les absents comptent comme « non » : au cran 2 (quorum 12), 9 voix pour passent avec 3 « contre »
au plus ; au cran 3 (quorum 50), il faut 39 voix pour, avec 11 « contre » au plus. »
**Pourquoi.**
- L'exemple (5) : ta décision du 03/11, aucun chiffre daté dans un texte voté. 7 224 membres et 120 votants
sont un état de la toile et une participation d'une date ; ce qui en était calculé sort avec eux.
- La phrase du quorum (1) : « pas un nombre minimal de votants » est faux pour un quorum bas fixé par
l'auteur. Au quorum 2 (le plus bas dans Monnaie libre), il faut 2 « pour », à tout cran et sur toute
toile : le quorum y est bien un minimum. La phrase nouvelle est vraie pour tout quorum : sous le quorum,
le moteur demande exactement le seuil du quorum. « autant de « pour » » plutôt que « autant de voix pour »,
qui se lisait d'abord « pour que ».
- Les phrases 2, 3 et 4 disaient la part du cran « comme d'habitude » sans condition. C'est faux quand la
participation habituelle reste sous le quorum : le groupe est alors jugé sur le quorum. Exemple : une
toile de 3 000 membres dont la participation habituelle est de 40 votants (dans les bornes : 1 % de
3 000, c'est 30), au cran 3, quorum 50 : la courbe donne 75 % à 40 votants, mais la part exigée se calcule
sur 50 (74,2 %), et il faut 38 « pour » de ces 40 votants, soit 95 %, pas 75 %. Cela arrive dès que la
toile passe sous 5 000 membres avec une participation habituelle sous 50, ou quand l'auteur d'un article
fixe un quorum au-dessus de la participation habituelle. Les phrases 2 et 4 ont été trouvées par le lot
T3 ; la phrase 3 par la relecture indépendante de T3 (« 2ce2028 : à reprendre »), reprise par le lot T3b.
Accord d'orch sur les trois (03/11, à 17 h 46, puis en réponse à mon message de 18 h 13).
Les preuves, phrase par phrase, et les textes entiers en fr, en, es :
`docs/chantiers/acte-certification/textes-quorum-seed.md`, section « Lot T3 » (avec « Après la relecture
de 2ce2028 »).
## Intention
Mettre en ligne les lots T3 et T3b. Yvv, le 03/11 avant 16 h 56, mot pour mot : « Je valide
textes-quorum-seed (dont le point 3, pas de chiffre datés dans un texte voté). Tu peux lancer la livraison
de decision. » (registre `~/harness/etat/reponses-yvv.md`, commit `9b701da`). Ordre T3 d'orch (dev-63, 03/11
vers 16 h 57) : retirer des textes votés F1.1, F1.2, N1.1 (fr, en, es ; deux groupes) tout chiffre qui
dépend de l'état de la toile ou d'une participation à une date ; le texte reste vrai pour tout W ; la phrase
de N1.1 « pas un nombre minimal de votants », fausse pour un quorum d'auteur bas, écrite vraie. Points 1, 2,
4 et 8 de `textes-quorum-seed.md` : le défaut reste.
**en et es** (fidèles au français) :
- 1 : « Each level also has its quorum: below the quorum, the voters who are missing count as votes against,
and it takes as many votes in favour as if the quorum had voted. » ; « Cada nivel tiene además su quórum:
por debajo del quórum, los votantes que faltan cuentan como «no», y hacen falta tantos votos a favor como
si hubiera votado el quórum. »
- 2 : « the share asked beyond the quorum, when the group votes as usual » ; « la proporción exigida más allá
del quórum, cuando el grupo vota como de costumbre ».
- 3 : « **G** is computed so that the share asked, beyond the quorum, is exactly that of the level when the
group votes as usual: `G = …`, where s is that share of the level (60, 67, 75, 83 or 90%) and p̃ the usual
turnout divided by W. » ; « **G** se calcula para que la proporción exigida, más allá del quórum, sea
exactamente la del nivel cuando el grupo vota como de costumbre: `G = …`, donde s es esa proporción del
nivel (60, 67, 75, 83 o 90 %) y p̃ la participación habitual dividida por W. »
- 4 : « and, beyond the quorum, the group asks for 75% of votes in favour when it votes as usual » ; « y, más
allá del quórum, el grupo pide un 75 % de votos a favor cuando vota como de costumbre ».
**Les preuves** (tests de `crates/ld-server/tests/seed_quorum_texts.rs`) :
- aucun chiffre daté : `every_number_of_the_quorum_texts_is_the_engine_s` n'admet que des paramètres (vu
rouge sur les textes de T2) ; « 100 votants » y est dit pour ce qu'il est, deux fois le quorum de
référence, et `the_reference_turnout_is_a_parameter_the_bounds_bring_back` montre que les bornes le
ramènent hors de 200 à 10 000 membres ;
- 1 : `under_the_quorum_it_takes_as_many_for_as_if_the_quorum_had_voted`, plus de 500 000 cas (W de 100 à
10 000 000, chaque quorum de la borne basse à W, les cinq crans, quatre participations, le groupe d'essai) ;
- 2 et 4 : `the_share_of_a_level_as_usual_is_asked_beyond_the_quorum` ;
- 3 : `g_gives_the_share_of_the_level_beyond_the_quorum_when_the_group_votes_as_usual` (même grille ; G tel
qu'écrit égale celui du moteur ; s au-delà du quorum, plus bas en dessous ; le cas 3 000 / 40 en dur) ;
- F1.1 laissé : `b_to_the_power_w_never_counts_in_the_web_of_trust` (« B^W ne compte pas », de 100 à
10 000 000 membres).
## Ce qui part
Version `e7ab82f` (lots T3 et T3b), qui contient la version en ligne `6f6197c`. Code touché : `crates/ld-server/src/seed_amend.rs`
(les deux amendements), `crates/ld-server/src/wot.rs` (une constante rendue publique pour les tests, valeur
inchangée), `seeds/acte-engagement-certification.json` (bases neuves), des tests et une fixture
(`tests/fixtures/seed-quorum-t2.json`, les textes de T2) ; le reste est documentation. `web/` et
`crates/ld-engine` : rien. Configuration (`docker/`, `.woodpecker/`, `.env`, `data/`) et migrations : rien
(prémisse 4).
## Ce que l'acte écrit dans la base de production (donnée runtime)
- **Aucune migration.**
- **Amendement de seed gardé** `2026-11-03-f1-2-chiffres` et `2026-11-03-n1-1-chiffres`, qui suivent
(`follows`) ceux de T2 (`2026-11-03-f1-2-phrases`, `-n1-1-phrases`), décidé une fois par document, dans une
transaction, seulement si personne n'a touché l'article : 0 vote (simulé compris), 0 ligne de bulletin,
aucune coquille, traduction de membre ni objection, texte d'avant identique à l'empreinte posée par T2
(F1.2 `96caf353…`, N1.1 `7fbedcb8…`) ; textes d'après : F1.2 `ddce5aa5…`, N1.1 `7f62fd42…` ; F1.2 et N1.1 admis à la révision 4 seulement si ce sont les
amendements suivis (M5, M6b, M6c), et eux seuls, qui l'ont écrite.
- `proposals` : texte fr, révision + 1 (F1.2 et N1.1 → 5) ;
- `revisions` : une ligne `amendment` ;
- `translations` : en et es remplacés ;
- `seed_amendments` : la décision ;
- `outbox` : une ligne par article dans Monnaie libre, qui attend (publication suspendue) ; rien pour
l'essai.
Refus possibles, le texte d'avant reste : `not_a_seed`, `no_open_version`, `voted_into_force`,
`confirmed`, `votes`, `ballots`, `corrected`, `translation_edited`, `signalled`, `revised`,
`text_differs`, `changed`.
- Les amendements de T2 sur F1.2 et N1.1 sont marqués dépassés : ils ne décident plus rien.
- **F1.1 n'est pas touché. Aucun vote, aucune autre proposition, aucun autre article n'est touché ; la
publication reste suspendue.**
## Répétition
**Faite le 03/11 de 18 h 54 min 44 à 18 h 55 min 28, réseau coupé** (`unshare -rn`, boucle locale seule :
`m8/repetition-isolee.sh`), avec le serveur de `e7ab82f` (binaire de la boucle, construit à 18 h 54, copié en
`m8/ld-server-e7ab82f`), sur une copie (18 h 47 min 52) de la copie de production prise par orch de
17 h 46 min 22 à 17 h 46 min 30 (production sur `6f6197cc`), publication vers un dépôt nu local (journal
`m8/repetition-m8b.log`, scratchpad de l'intégrateur). Deux démarrages. Orch comparera les comptes de la
production à ceux de cette copie avant de pousser.
| | Avant | Après |
|---|---|---|
| F1.1 (deux groupes) | ouverte, seed, révision 3, 0 vote, 0 bulletin | inchangée |
| F1.2, N1.1 (deux groupes) | ouvertes, seed, révision 4, 0 vote, 0 bulletin | révision 5 |
| Révisions | 119 | 123 |
| Traductions | 144 | 144 (en, es des deux articles remplacés) |
| `seed_amendments` | 22 | 26 |
| File de publication (Monnaie libre) | 10 en attente, 13 faites | 12 en attente, 13 faites |
| Commits vers le dépôt des textes (local) | — | 0 (« publication suspended … waiting=12 ») |
| Tout le reste (`m8/counts.sh` : migrations 1–11, propositions, unités en vigueur, I1/E1/E2, `inertia_changes`, votes, bulletins, signalements, identités, quorums) | | identique |
**La base entière comparée** (`.dump`, et colonne par colonne) : changent exactement les 4 propositions de
F1.2 et N1.1 (`body`, `revision`, `updated_at` : `ff53cbdc`, `13ee215f` dans Monnaie libre, `e7ae6bcb`,
`d75f7e90` dans l'essai), leurs 8 traductions en et es (`body`, `source_hash`, `updated_at`), 4 révisions et
4 décisions ajoutées, 2 lignes de file ajoutées et les 10 lignes en attente reportées (`next_at`), les deux
compteurs (`sqlite_sequence` : révisions 123, file 25). Rien d'autre (`settings` inchangé : W n'a pas pu être
relu, réseau coupé). `integrity_check` ok, `foreign_key_check` vide. Les textes écrits sont ceux du seed de
`e7ab82f`, en fr, en et es, dans les deux groupes (comparés). Journal : quatre « seed amendment applied »
(`2026-11-03-f1-2-chiffres`, `-n1-1-chiffres` × essai, Monnaie libre), « publication suspended …
waiting=12 », aucune ligne ERROR ; un seul WARN, attendu réseau coupé : « web of trust size: no node nor
indexer answered, keeping the last value ». **Un second démarrage ne rejoue rien** (comptes identiques,
aucun « applied »).
Une première répétition, sur `2ce2028` (lot T3 seul), le 03/11 à 17 h 54, avait donné les mêmes comptes ; le
réseau n'y était pas coupé (W relu sur `rpc.duniter.org`, `settings.wot_size` 5 709 → 5 711), ce que la
relecture a relevé. Ses copies sont retirées (18 h 47).
## Effet attendu
- Dans les deux groupes, N1.1 n'a plus d'exemple chiffré et dit la phrase du quorum vraie ; N1.1 et F1.2
disent « au-delà du quorum » ; en fr, en et es. F1.1 inchangé.
- Rien d'autre ne change ; le dépôt des textes reste à `9e0f45a`.
Irréversibilité : **partielle**. Le code se remet en arrière ; les nouveaux textes restent (l'ancien est
dans l'historique de chaque proposition).
## Avant — prémisses vivantes
1. La production sert `6f6197c` : santé `"build":"6f6197cc"` ; `prod/main` → `6f6197c`.
2. Sur une copie fraîche, `m8/premisse.sh <db>` (scratchpad de l'intégrateur, lecture seule) : 6 lignes,
toutes `open`, origine `seed`, révision 3 pour F1.1 et 4 pour F1.2 et N1.1, votes, bulletins, coquilles
et objections à 0 ; migration 11. Un article touché est refusé par l'amendement avec sa raison, et l'acte
reste valable pour l'autre. **Lu par l'intégrateur le 03/11 à 17 h 47, puis à 18 h 54**, sur ses copies de
la copie d'orch de 17 h 46 : l'attendu exact ; 0 vote et 0 ligne de bulletin en tout ; une identité. À
relire sur la copie fraîche juste avant la poussée, et comparer `counts.sh` à la colonne « Avant » de la
répétition.
3. La relecture indépendante de `e7ab82f`, inscrite « ok » dans `~/harness/etat/relectures.json`.
- Première relecture, **`2ce2028` : à reprendre** (sous-agent neuf, sans le contexte de l'intégrateur,
lancé à 17 h 55, inscrit à 18 h 12 ; transcript
`~/.claude/projects/-home-yvv-Documents-PROD-DEV-libreDecision/d0a7108b-7f2f-484a-bcb0-de339238199d/subagents/agent-a3341da520d4c5530.jsonl`) :
la phrase de G de N1.1 fausse sous le quorum ; mineurs : « autant de voix pour que si » ambigu, le test
de « 100 votants » qui ne pouvait pas échouer, la répétition qui avait lu W sur la chaîne. Tout repris
par le lot T3b (`e7ab82f`).
- Deuxième relecture, **`e7ab82f` : à reprendre** (sous-agent neuf, sans le contexte de l'intégrateur,
lancé à 18 h 56, inscrit à 19 h 16 ; transcript
`~/.claude/projects/-home-yvv-Documents-PROD-DEV-libreDecision/d0a7108b-7f2f-484a-bcb0-de339238199d/subagents/agent-a92ddff6f85c88f90.jsonl`) :
« quand le groupe vote comme d'habitude » se lit comme la médiane réelle, alors que le moteur cale G sur
la participation habituelle bornée (W 7 224, médiane 40, cran 2 : 28 « pour » sur 40, pas 27) ; la
grille des tests sautait ces cas. Repris par le lot T3c (lancé à 19 h 18) ; ce dossier sera refait sur
son sha.
4. `git diff 6f6197c e7ab82f -- docker/ .woodpecker/ .env data/ crates/ld-server/migrations/ web/ crates/ld-engine/`
→ vide (vu par l'intégrateur le 03/11 à 18 h 48).
5. Boucle verte sur `e7ab82f`, le 03/11 de 18 h 47 à 18 h 54 (journal `m8/loop-b.log`), du premier coup :
fmt, clippy `-D warnings`, 314 tests Rust, svelte-check 0 / 0 (648 fichiers), 78 vitest, build, e2e
42 / 42 (18 h 50 à 18 h 54). Image de production construite le 03/11 de 18 h 56 à 19 h 01 (copie
principale sur `d17a5f6`, même code que `e7ab82f` : le dossier seul en plus), sortie 0 : étage serveur
rejoué (fmt, clippy, 314 tests Rust « ok », 0 échec, build release) ; étage web repris du cache (`web/`
identique depuis `6f6197c`) ; image de contrôle retirée à 19 h 01 (journal `m8/docker-m8b.log`).
6. Sur sonic, aucun témoin `/opt/libredecision-app/deploying`.
## Commande exacte
```sh
cd /home/yvv/Documents/PROD/DEV/libreDecision
git push prod e7ab82f48f41f52b3f31e322553f7cf18bc21601:main
```
## Vérifications après
- [ ] Santé vue de l'extérieur → `"build":"e7ab82f4"`.
- [ ] Journaux : quatre « seed amendment applied » (`2026-11-03-f1-2-chiffres`, `-n1-1-chiffres` × essai,
Monnaie libre), « publication suspended … waiting=12 », aucune ligne ERROR ni WARN.
- [ ] Redémarrage à froid : aucun amendement rejoué.
- [ ] Sur une copie fraîche : F1.2 et N1.1 en révision 5, F1.1 en révision 3, dans les deux groupes ; le
reste identique à la ligne près à la copie d'avant (comptes de `counts.sh`) ; `integrity_check` ok.
- [ ] Le dépôt des textes reste à `9e0f45a`.
## Retour
- **Le code** : `docker tag libredecision-app:previous libredecision-app:latest`, puis
`cd /opt/libredecision-app && docker compose up -d --force-recreate`. `previous` sera `6f6197c`, qui
attend aussi le premier texte pour publier : pas de coupure de la publication à faire. `6f6197c` sert les
nouveaux textes tels quels (ce sont des données).
- **Les textes** : pas de retour automatique ; l'ancien texte reste dans l'historique de chaque
proposition, un nouvel amendement gardé pourrait le remettre.
+101 -1
View File
@@ -13,6 +13,9 @@
//! earlier one replaces the text that one wrote. The same day (lot T2, after the
//! review of M6b), three phrases of those texts are written true by amendments that
//! follow lot T's: F1.1 is then at its revision 2, F1.2 and N1.1 at their revision 3.
//! Still the same day (lot T3, Yvv: no dated figure in a voted text), F1.2 and N1.1 are
//! written without a figure that depends on the web of trust, and true for every quorum,
//! by amendments that follow lot T2's: they are then at their revision 4; F1.1 is left.
//! So an amendment admits, besides the seed's own revision 1, the revision written
//! by the amendments it follows (`earlier`: the one it follows, the one that one
//! follows…), applied in that order, the last being the one it follows, and nothing
@@ -205,7 +208,7 @@ pub const AMENDMENTS: &[Amendment] = &[
to: "96caf353b33805f2894593d72c5b70fce2e751039cd7f4651d8842c986729a14",
reason: "proposition de départ réécrite : F1.2, le quorum fixé tant qu'aucun vote n'a laissé de trace",
follows: Some("2026-11-03-f1-2-quorum"),
superseded_by: None,
superseded_by: Some("2026-11-03-f1-2-chiffres"),
},
Amendment {
id: "2026-11-03-n1-1-phrases",
@@ -216,6 +219,40 @@ pub const AMENDMENTS: &[Amendment] = &[
to: "7fbedcb8750c208f8790c4f87dc21d8bd1096a27a1a0044af6b9b8f2057f2aa8",
reason: "proposition de départ réécrite : N1.1, le quorum n'est pas un minimum de votants",
follows: Some("2026-11-03-n1-1-quorum"),
superseded_by: Some("2026-11-03-n1-1-chiffres"),
},
// No dated figure in a voted text (lot T3, Yvv, 2026-11-03: « pas de chiffre datés dans un
// texte voté »), every sentence true for every W and every quorum: N1.1 loses its example
// (7 224 members, 120 voters) and says that under the quorum it takes as many « pour » as if
// the quorum had voted; N1.1 and F1.2 ask the share of a level « comme d'habitude » beyond the
// quorum. Each replaces the text lot T2 wrote, at its revision 4. F1.1 is not touched. After
// the review of 2ce2028 (lot T3b, before it went online, so the same amendment): N1.1 says G
// gives the share of the level beyond the quorum, and « autant de « pour » » in French. After
// the review of e7ab82f (lot T3c, still before it went online, still the same amendments): the
// defined term « à la participation habituelle » where « comme d'habitude » read first as the
// real median, false once it leaves its bounds (F1.2, N1.1); in N1.1, « le quorum de
// l'article » where a bare « quorum » could be the level's, « la part exigée », « Tant qu'elle
// repose sur moins de 5 propositions » (the year counts), « Elle est ramenée entre 1 % et 50 % ».
Amendment {
id: "2026-11-03-f1-2-chiffres",
doc: "acte-engagement-certification",
unit: "F1.2",
version: Version::Open("1.0.0"),
from: "96caf353b33805f2894593d72c5b70fce2e751039cd7f4651d8842c986729a14",
to: "0c3b800b0c72b1edd4b884c03c6c5479c17609dcf82a95b593d408821e28bb4e",
reason: "proposition de départ réécrite : F1.2, la part du cran par défaut au-delà du quorum, à la participation habituelle",
follows: Some("2026-11-03-f1-2-phrases"),
superseded_by: None,
},
Amendment {
id: "2026-11-03-n1-1-chiffres",
doc: "acte-engagement-certification",
unit: "N1.1",
version: Version::Open("1.0.0"),
from: "7fbedcb8750c208f8790c4f87dc21d8bd1096a27a1a0044af6b9b8f2057f2aa8",
to: "8107c5fc746121f18c8a440e86e23310c5a59ae8e92f5a07f6b098419980263c",
reason: "proposition de départ réécrite : N1.1, sans chiffre daté ; sous le quorum de l'article, autant de « pour » que si ce quorum avait voté ; au-delà, la part du cran à la participation habituelle",
follows: Some("2026-11-03-n1-1-phrases"),
superseded_by: None,
},
];
@@ -782,6 +819,61 @@ mod tests {
assert_eq!(verdict(Some(&written_by(&["m5", "t"])), &second, &["m5"]), Verdict::Refuse("revised"));
}
#[test]
fn a_fourth_amendment_admits_the_texts_the_three_before_wrote_and_nothing_else() {
// Lot T3 (2026-11-03): F1.2 and N1.1 were amended by M5, M6b and M6c (revision 4 in
// production); the texts without dated figures replace the text of M6c, after it only.
let fourth = Amendment { version: Version::Open("1.0.0"), follows: Some("t2"), ..A };
let before: &[&str] = &["m5", "t", "t2"];
// Production: M5, M6b, M6c, each its revision.
assert_eq!(verdict(Some(&written_by(&["m5", "t", "t2"])), &fourth, before), Verdict::Apply);
// A base born with the text of M5 (02/11): M6b and M6c wrote its revisions 2 and 3.
assert_eq!(verdict(Some(&written_by(&["t", "t2"])), &fourth, before), Verdict::Apply);
// A base born with the text of M6b, then of M6c: its revision 2, its revision 1.
assert_eq!(verdict(Some(&written_by(&["t2"])), &fourth, before), Verdict::Apply);
assert_eq!(verdict(Some(&intact()), &fourth, before), Verdict::Apply);
// The last revision is not M6c's, or not by them alone, or out of order: refused.
for applied in [
&["m5", "t"][..],
&["t"],
&["m5"],
&["t2", "t"],
&["m5", "t2", "t"],
&["other", "t", "t2"],
&["m5", "t", "t2", "t2"],
] {
assert_eq!(verdict(Some(&written_by(applied)), &fourth, before), Verdict::Refuse("revised"), "{applied:?}");
}
// A typo after M6c: a revision no amendment wrote.
let typo = Facts {
revision: 5,
revisions: vec![
"initial".into(),
"amendment".into(),
"amendment".into(),
"amendment".into(),
"typo".into(),
],
..written_by(&["m5", "t", "t2"])
};
assert_eq!(verdict(Some(&typo), &fourth, before), Verdict::Refuse("revised"));
// Any trace of a person keeps the text, with its reason.
for (f, why) in [
(Facts { votes: 1, ..written_by(&["m5", "t", "t2"]) }, "votes"),
(Facts { ballots: 1, ..written_by(&["m5", "t", "t2"]) }, "ballots"),
(Facts { typos: 1, ..written_by(&["m5", "t", "t2"]) }, "corrected"),
(Facts { member_translations: 1, ..written_by(&["m5", "t", "t2"]) }, "translation_edited"),
(Facts { signals: 1, ..written_by(&["m5", "t", "t2"]) }, "signalled"),
(Facts { fingerprint: "other".into(), ..written_by(&["m5", "t", "t2"]) }, "text_differs"),
(Facts { confirmed: true, ..written_by(&["m5", "t", "t2"]) }, "confirmed"),
] {
assert_eq!(verdict(Some(&f), &fourth, before), Verdict::Refuse(why), "{f:?}");
}
// Lot T2's own amendment never admits a revision 4.
let third = Amendment { version: Version::Open("1.0.0"), follows: Some("t"), ..A };
assert_eq!(verdict(Some(&written_by(&["m5", "t", "t2"])), &third, &["m5", "t"]), Verdict::Refuse("revised"));
}
#[test]
fn the_amendments_followed_are_read_through_the_list_oldest_first() {
let by_id = |id: &str| AMENDMENTS.iter().find(|a| a.id == id).expect("amendment");
@@ -794,6 +886,14 @@ mod tests {
["2026-11-02-n1-1-regles", "2026-11-03-n1-1-quorum"]
);
assert_eq!(earlier(AMENDMENTS, by_id("2026-11-03-f1-1-phrases")), ["2026-11-03-f1-1-quorum"]);
assert_eq!(
earlier(AMENDMENTS, by_id("2026-11-03-f1-2-chiffres")),
["2026-11-02-f1-2-regles", "2026-11-03-f1-2-quorum", "2026-11-03-f1-2-phrases"]
);
assert_eq!(
earlier(AMENDMENTS, by_id("2026-11-03-n1-1-chiffres")),
["2026-11-02-n1-1-regles", "2026-11-03-n1-1-quorum", "2026-11-03-n1-1-phrases"]
);
assert!(earlier(AMENDMENTS, by_id("2026-10-30-i1-raison-d-etre")).is_empty());
// Each one followed wrote the text the next replaces, and is superseded by it.
for a in AMENDMENTS.iter().filter(|a| a.follows.is_some()) {
+3 -1
View File
@@ -12,7 +12,9 @@ use std::time::Duration;
/// W is read again this often.
pub const REFRESH: Duration = Duration::from_secs(6 * 3600);
const PLAUSIBLE: std::ops::RangeInclusive<u32> = 100..=10_000_000;
/// The sizes of the web of trust taken as true; anything else read is ignored. The texts of
/// the seed are written true for every W in it (lot T3).
pub const PLAUSIBLE: std::ops::RangeInclusive<u32> = 100..=10_000_000;
fn twox_128(data: &[u8]) -> [u8; 16] {
let mut out = [0u8; 16];
+44
View File
@@ -0,0 +1,44 @@
{
"_source": "seeds/acte-engagement-certification.json au commit 8c1e7af : F1.1, F1.2 et N1.1 tels que la production les tient depuis M6c (84f015a, le 03/11 à 11 h 05 ; lot T2, les trois phrases), inchangés par M7b (6f6197c)",
"units": {
"F1.1": {
"label": "1.0.0",
"title": {
"fr": "Formule du seuil WoT",
"en": "WoT threshold formula",
"es": "Fórmula del umbral WoT"
},
"body": {
"fr": "Le seuil est le nombre de voix pour qu'il faut à une version pour entrer en vigueur. Sous le quorum Q, les votants qui manquent comptent comme « non » : le seuil se calcule comme si Q personnes avaient voté. Au-delà, il faut la part de « pour » que demande le cran d'inertie de l'article, parmi tous les votants : cette part est la plus haute au quorum et baisse quand la participation monte, jusqu'à la majorité M quand tout le monde vote.\n\n`T' = max(T, Q)`\n`Seuil = B^W + (M + (1 − M) × (1 − (T'/W)^G)) × T'`\n\nUne version passe quand ses voix pour atteignent le seuil, arrondi à l'entier au-dessus.\n\n- **T** : les votes exprimés sur la version, pour et contre.\n- **Q** : le quorum de l'article ; **T'** : les votants retenus, T, ou Q s'il en manque.\n- **W** : le nombre de membres de la toile de confiance Ğ1.\n- **B** : la base ; à la puissance W, elle est si petite qu'elle ne compte pas.\n- **M** : la majorité demandée quand tout le monde vote.\n- **G** : le gradient : plus il est grand, plus la part demandée monte quand peu de gens votent.\n\nLeurs valeurs sont dans « Paramètres par défaut » et « Niveaux d'inertie ».",
"en": "The threshold is the number of votes in favour a version needs to come into force. Below the quorum Q, the voters who are missing count as votes against: the threshold is worked out as if Q people had voted. Beyond it, it takes the share of votes in favour that the article's level of inertia asks for, among all the voters: that share is highest at the quorum and falls as turnout rises, down to the majority M when everyone votes.\n\n`T' = max(T, Q)`\n`Threshold = B^W + (M + (1 − M) × (1 − (T'/W)^G)) × T'`\n\nA version passes when its votes in favour reach the threshold, rounded up to a whole number.\n\n- **T**: the votes cast on the version, for and against.\n- **Q**: the article's quorum; **T'**: the voters counted, T, or Q if some are missing.\n- **W**: the number of members of the Ğ1 web of trust.\n- **B**: the base; raised to the power W, it is so small that it does not count.\n- **M**: the majority asked for when everyone votes.\n- **G**: the gradient: the larger it is, the higher the share asked for when few people vote.\n\nTheir values are in “Default parameters” and “Inertia levels”.",
"es": "El umbral es el número de votos a favor que necesita una versión para entrar en vigor. Por debajo del quórum Q, los votantes que faltan cuentan como «no»: el umbral se calcula como si hubieran votado Q personas. Más allá, hace falta la proporción de votos a favor que pide el nivel de inercia del artículo, entre todos los votantes: esa proporción es la más alta en el quórum y baja cuando sube la participación, hasta la mayoría M cuando vota todo el mundo.\n\n`T' = max(T, Q)`\n`Umbral = B^W + (M + (1 − M) × (1 − (T'/W)^G)) × T'`\n\nUna versión pasa cuando sus votos a favor alcanzan el umbral, redondeado al entero superior.\n\n- **T**: los votos emitidos sobre la versión, a favor y en contra.\n- **Q**: el quórum del artículo; **T'**: los votantes contados, T, o Q si faltan.\n- **W**: el número de miembros de la red de confianza Ğ1.\n- **B**: la base; elevada a la potencia W, es tan pequeña que no cuenta.\n- **M**: la mayoría pedida cuando vota todo el mundo.\n- **G**: el gradiente: cuanto mayor es, más alta es la proporción pedida cuando vota poca gente.\n\nSus valores están en «Parámetros por defecto» y «Niveles de inercia»."
}
},
"F1.2": {
"label": "1.0.0",
"title": {
"fr": "Paramètres par défaut",
"en": "Default parameters",
"es": "Parámetros por defecto"
},
"body": {
"fr": "Les valeurs des lettres de la formule (voir « Formule du seuil WoT ») et la façon dont le vote se déroule.\n\n**Un vote permanent, sans durée**\n\n- Chaque version se vote à tout moment, sans échéance. Chacun peut changer ou retirer son vote : le dernier fait foi.\n- Une proposition entre en vigueur dès qu'elle atteint son seuil. S'il y a déjà un texte en vigueur, il lui faut en plus une marge (voix pour moins voix exigées) plus large que celle de ce texte. Le texte remplacé redevient une proposition, avec ses votes : il peut revenir.\n- Si plusieurs propositions y parviennent, celle qui a la marge la plus large entre en vigueur.\n\n**Les lettres**\n\n- **W** : le nombre de membres de la toile de confiance Ğ1, relu sur la chaîne toutes les 6 heures.\n- **T** : les votes exprimés sur la version, pour et contre.\n- **Q**, le quorum : sous ce nombre de votants, ceux qui manquent comptent comme « non ». Chaque article prend celui de son cran : 12, 12, 50, 50 et 50 dans Monnaie libre, du cran 1 au cran 5. L'auteur de la première version d'un article, un administrateur pour les textes de départ, peut en fixer un autre tant que l'article ne garde la trace d'aucun vote. Dans Monnaie libre, jamais moins de 2 : une seule voix ne fait jamais passer un texte.\n- **B = 0,1** : dans la toile de confiance, `B^W` est si petit qu'il ne compte pas.\n- **M** et **G** : donnés par le cran d'inertie de l'article (voir « Niveaux d'inertie »). G n'est pas fixé à la main : il se déduit de la participation habituelle du groupe.\n\n**Par défaut**\n\n- Le cran par défaut est le 3 (moyenne) : M = 55 %, un quorum de 50 dans Monnaie libre, et le groupe demande 75 % de « pour » quand il vote comme d'habitude. Tout nouvel article commence à ce cran.\n- Au départ, aucun article n'est en vigueur. Raison d'être, Unicité du compte et Réciprocité sont des Propositions seed, mises en avant pour lancer le vote, au cran 2 (basse). Le titre du document est au cran 4 (haute), l'ordre des articles de chaque section au cran 2, tous les autres articles au cran 3.",
"en": "The values of the letters of the formula (see “WoT threshold formula”) and how the vote runs.\n\n**A permanent vote, with no duration**\n\n- Every version can be voted on at any time, with no deadline. Anyone can change or withdraw their vote: the last one is the one that counts.\n- A proposal comes into force as soon as it reaches its threshold. If a text is already in force, it also needs a wider margin (votes in favour minus votes required) than that text has. The replaced text becomes a proposal again, with its votes: it can come back.\n- If several proposals get there, the one with the widest margin comes into force.\n\n**The letters**\n\n- **W**: the number of members of the Ğ1 web of trust, read again from the chain every 6 hours.\n- **T**: the votes cast on the version, for and against.\n- **Q**, the quorum: below this number of voters, those who are missing count as votes against. Each article takes the one of its level: 12, 12, 50, 50 and 50 in Monnaie libre, from level 1 to level 5. The author of the first version of an article, an administrator for the starting texts, can set another one as long as the article keeps no trace of any vote. In Monnaie libre, never less than 2: a single vote never passes a text.\n- **B = 0.1**: in the web of trust, `B^W` is so small that it does not count.\n- **M** and **G**: given by the article's level of inertia (see “Inertia levels”). G is not set by hand: it follows from the group's usual turnout.\n\n**By default**\n\n- The default level is 3 (medium): M = 55%, a quorum of 50 in Monnaie libre, and the group asks for 75% of votes in favour when it votes as usual. Every new article starts at this level.\n- At the start, no article is in force. Purpose, Uniqueness of the account and Reciprocity are seed proposals, put forward to start the vote, at level 2 (low). The title of the document is at level 4 (high), the order of the articles of each section at level 2, all other articles at level 3.",
"es": "Los valores de las letras de la fórmula (ver «Fórmula del umbral WoT») y cómo se desarrolla la votación.\n\n**Una votación permanente, sin duración**\n\n- Cada versión se vota en cualquier momento, sin plazo. Cada cual puede cambiar o retirar su voto: el último es el que cuenta.\n- Una propuesta entra en vigor en cuanto alcanza su umbral. Si ya hay un texto en vigor, necesita además un margen (votos a favor menos votos exigidos) más amplio que el de ese texto. El texto sustituido vuelve a ser una propuesta, con sus votos: puede volver.\n- Si varias propuestas lo consiguen, entra en vigor la que tiene el margen más amplio.\n\n**Las letras**\n\n- **W**: el número de miembros de la red de confianza Ğ1, leído de nuevo en la cadena cada 6 horas.\n- **T**: los votos emitidos sobre la versión, a favor y en contra.\n- **Q**, el quórum: por debajo de este número de votantes, los que faltan cuentan como «no». Cada artículo toma el de su nivel: 12, 12, 50, 50 y 50 en Monnaie libre, del nivel 1 al nivel 5. El autor de la primera versión de un artículo, un administrador para los textos de partida, puede fijar otro mientras el artículo no guarde rastro de ningún voto. En Monnaie libre, nunca menos de 2: un solo voto nunca hace pasar un texto.\n- **B = 0,1**: en la red de confianza, `B^W` es tan pequeño que no cuenta.\n- **M** y **G**: los da el nivel de inercia del artículo (ver «Niveles de inercia»). G no se fija a mano: se deduce de la participación habitual del grupo.\n\n**Por defecto**\n\n- El nivel por defecto es el 3 (media): M = 55 %, un quórum de 50 en Monnaie libre, y el grupo pide un 75 % de votos a favor cuando vota como de costumbre. Todo artículo nuevo empieza en este nivel.\n- Al inicio, ningún artículo está en vigor. Razón de ser, Unicidad de la cuenta y Reciprocidad son Propuestas seed, puestas en primer plano para lanzar la votación, en el nivel 2 (baja). El título del documento está en el nivel 4 (alta), el orden de los artículos de cada sección en el nivel 2, todos los demás artículos en el nivel 3."
}
},
"N1.1": {
"label": "1.0.0",
"title": {
"fr": "Niveaux d'inertie",
"en": "Inertia levels",
"es": "Niveles de inercia"
},
"body": {
"fr": "À chaque cran, le groupe demande une part de « pour » parmi les votants (voir « Formule du seuil WoT »). Chaque cran a aussi son quorum, qui n'est pas un nombre minimal de votants : sous le quorum, les votants qui manquent comptent comme « non ». La part dépend du cran et du nombre de votants, comparé à la participation habituelle du groupe : au-delà du quorum, plus il y a de votants, plus elle baisse, jusqu'à la majorité M quand tout le monde vote.\n\n`Part exigée = M + (1 − M) × (1 − (T'/W)^G)`, où T' est le nombre de votants, ou le quorum s'il en manque.\n\n**Les cinq crans** : le quorum dans Monnaie libre, la part exigée quand le groupe vote comme d'habitude, puis quand tout le monde vote, et ce qui est à ce cran au départ.\n\n- **Cran 1 · très basse** : quorum 12 ; 60 % comme d'habitude, 50 % quand tout le monde vote. Aucun article au départ.\n- **Cran 2 · basse** : quorum 12 ; 67 % comme d'habitude, 50 % quand tout le monde vote. Raison d'être, Unicité du compte, Réciprocité, et l'ordre des articles de chaque section.\n- **Cran 3 · moyenne** : quorum 50 ; 75 % comme d'habitude, 55 % quand tout le monde vote. Le cran par défaut : tous les autres articles, et chaque nouvel article.\n- **Cran 4 · haute** : quorum 50 ; 83 % comme d'habitude, 60 % quand tout le monde vote. Le titre du document.\n- **Cran 5 · très haute** : quorum 50 ; 90 % comme d'habitude, 66 % quand tout le monde vote. Aucun article au départ.\n\n**La participation habituelle** est la médiane du nombre de votants des propositions du groupe votées depuis un an. Tant que le groupe n'a pas voté sur 5 propositions, elle vaut deux fois le quorum de référence du document : 100 votants dans Monnaie libre. Elle ne dépend pas du quorum d'un article. Elle reste entre 1 % et 50 % de l'électorat, et se mesure une fois par jour.\n\n**G** se calcule pour que la part exigée, à la participation habituelle, soit exactement celle du cran : `G = ln(1 − (s − M)/(1 − M)) / ln(p̃)`, où s est la part exigée comme d'habitude et p̃ la participation habituelle divisée par W.\n\nExemple : avec 7 224 membres et une participation habituelle de 120 votants, quand 120 personnes votent, il faut 72, 81, 90, 100 ou 108 voix pour, du cran 1 au cran 5 ; au cran 3, 75 % des 120 votants, soit 90. Sous le quorum, les absents comptent comme « non » : au cran 2 (quorum 12), 9 voix pour passent avec 3 « contre » au plus ; au cran 3 (quorum 50), il faut 39 voix pour, avec 11 « contre » au plus.",
"en": "At each level, the group asks for a share of votes in favour among the voters (see “WoT threshold formula”). Each level also has its quorum, which is not a minimum number of voters: below the quorum, the voters who are missing count as votes against. The share depends on the level and on the number of voters, compared with the group's usual turnout: beyond the quorum, the more voters, the lower it gets, down to the majority M when everyone votes.\n\n`Share asked = M + (1 − M) × (1 − (T'/W)^G)`, where T' is the number of voters, or the quorum if some are missing.\n\n**The five levels**: the quorum in Monnaie libre, the share asked when the group votes as usual, then when everyone votes, and what is at that level at the start.\n\n- **Level 1 · very low**: quorum 12; 60% as usual, 50% when everyone votes. No article at the start.\n- **Level 2 · low**: quorum 12; 67% as usual, 50% when everyone votes. Purpose, Uniqueness of the account, Reciprocity, and the order of the articles of each section.\n- **Level 3 · medium**: quorum 50; 75% as usual, 55% when everyone votes. The default level: all other articles, and every new article.\n- **Level 4 · high**: quorum 50; 83% as usual, 60% when everyone votes. The title of the document.\n- **Level 5 · very high**: quorum 50; 90% as usual, 66% when everyone votes. No article at the start.\n\n**The usual turnout** is the median number of voters on the group's proposals voted on over the past year. Until the group has voted on 5 proposals, it is twice the document's reference quorum: 100 voters in Monnaie libre. It does not depend on the quorum of an article. It stays between 1% and 50% of the electorate, and is measured once a day.\n\n**G** is computed so that the share asked, at the usual turnout, is exactly that of the level: `G = ln(1 − (s − M)/(1 − M)) / ln(p̃)`, where s is the share asked as usual and p̃ the usual turnout divided by W.\n\nExample: with 7,224 members and a usual turnout of 120 voters, when 120 people vote, it takes 72, 81, 90, 100 or 108 votes in favour, from level 1 to level 5; at level 3, 75% of the 120 voters, i.e. 90. Below the quorum, those missing count as votes against: at level 2 (quorum 12), 9 votes in favour pass with 3 votes against at most; at level 3 (quorum 50), it takes 39 votes in favour, with 11 votes against at most.",
"es": "En cada nivel, el grupo pide una proporción de votos a favor entre los votantes (ver «Fórmula del umbral WoT»). Cada nivel tiene además su quórum, que no es un número mínimo de votantes: por debajo del quórum, los votantes que faltan cuentan como «no». La proporción depende del nivel y del número de votantes, comparado con la participación habitual del grupo: más allá del quórum, cuantos más votantes, más baja, hasta la mayoría M cuando vota todo el mundo.\n\n`Proporción exigida = M + (1 − M) × (1 − (T'/W)^G)`, donde T' es el número de votantes, o el quórum si faltan.\n\n**Los cinco niveles**: el quórum en Monnaie libre, la proporción exigida cuando el grupo vota como de costumbre, luego cuando vota todo el mundo, y lo que está en ese nivel al inicio.\n\n- **Nivel 1 · muy baja**: quórum 12; 60 % como de costumbre, 50 % cuando vota todo el mundo. Ningún artículo al inicio.\n- **Nivel 2 · baja**: quórum 12; 67 % como de costumbre, 50 % cuando vota todo el mundo. Razón de ser, Unicidad de la cuenta, Reciprocidad, y el orden de los artículos de cada sección.\n- **Nivel 3 · media**: quórum 50; 75 % como de costumbre, 55 % cuando vota todo el mundo. El nivel por defecto: todos los demás artículos, y todo artículo nuevo.\n- **Nivel 4 · alta**: quórum 50; 83 % como de costumbre, 60 % cuando vota todo el mundo. El título del documento.\n- **Nivel 5 · muy alta**: quórum 50; 90 % como de costumbre, 66 % cuando vota todo el mundo. Ningún artículo al inicio.\n\n**La participación habitual** es la mediana del número de votantes de las propuestas del grupo votadas en el último año. Hasta que el grupo haya votado 5 propuestas, vale dos veces el quórum de referencia del documento: 100 votantes en Monnaie libre. No depende del quórum de un artículo. Se mantiene entre el 1 % y el 50 % del electorado, y se mide una vez al día.\n\n**G** se calcula para que la proporción exigida, con la participación habitual, sea exactamente la del nivel: `G = ln(1 − (s − M)/(1 − M)) / ln(p̃)`, donde s es la proporción exigida como de costumbre y p̃ la participación habitual dividida por W.\n\nEjemplo: con 7224 miembros y una participación habitual de 120 votantes, cuando votan 120 personas, hacen falta 72, 81, 90, 100 o 108 votos a favor, del nivel 1 al nivel 5; en el nivel 3, el 75 % de los 120 votantes, es decir 90. Por debajo del quórum, los que faltan cuentan como «no»: en el nivel 2 (quórum 12), 9 votos a favor pasan con 3 en contra como mucho; en el nivel 3 (quórum 50), hacen falta 39 votos a favor, con 11 en contra como mucho."
}
}
}
}
+12
View File
@@ -94,6 +94,11 @@ fn numbers(levels: &Value, key: &str) -> Vec<u64> {
levels.as_array().expect("levels").iter().map(|l| l[key].as_u64().expect("number")).collect()
}
/// G of each level, as served.
fn gradients(doc: &Value) -> Vec<Value> {
doc["levels"].as_array().expect("levels").iter().map(|l| l["gradient"].clone()).collect()
}
/// (quorum, quorumDefault, canSetQuorum) of a unit.
fn quorum_of(u: &Value) -> (Option<u64>, Option<u64>, Option<bool>) {
(u["quorum"].as_u64(), u["quorumDefault"].as_u64(), u["canSetQuorum"].as_bool())
@@ -174,6 +179,8 @@ async fn the_author_of_an_article_sets_its_quorum_before_the_first_vote() {
.await;
let (u, text) =
(created["unitId"].as_str().expect("unit").to_owned(), created["id"].as_str().expect("id").to_owned());
// « Tout nouvel article commence à ce cran » (F1.2, « Par défaut »): the default level, 3.
assert_eq!(unit_by_id(&chiara.doc("essai").await, &u)["inertia"], 3);
// Its author may, another member may not; the test group: its level's quorum, 1.
assert_eq!(quorum_of(unit_by_id(&chiara.doc("essai").await, &u)), (None, Some(1), Some(true)));
assert_eq!(quorum_of(unit_by_id(&luna.doc("essai").await, &u)), (None, Some(1), Some(false)));
@@ -270,6 +277,7 @@ async fn in_monnaie_libre_a_quorum_holds_two_voices_and_a_ballot_counts_even_pen
chiara.login("Chiara", false).await;
let doc = admin.doc("monnaie-libre").await;
let doc_id = doc["doc"]["id"].as_str().expect("id").to_owned();
let usual = (doc["doc"]["participation"].clone(), gradients(&doc));
let i1 = unit(&doc, "I1");
let (u, p) = (i1["id"].as_str().expect("u").to_owned(), i1["proposals"][0]["id"].as_str().expect("p").to_owned());
// A text of the seed has no author: an administrator answers for it.
@@ -287,6 +295,10 @@ async fn in_monnaie_libre_a_quorum_holds_two_voices_and_a_ballot_counts_even_pen
}
let doc = admin.doc("monnaie-libre").await;
assert_eq!(unit(&doc, "I1")["proposals"][0]["evaluation"]["quorum"], 20);
// « Elle ne dépend pas du quorum d'un article » (N1.1, lot T3c): the participation habituelle,
// and G of each level, stay as they were (the reference rests on the document's, 2 × 50 / W).
assert_eq!((doc["doc"]["participation"].clone(), gradients(&doc)), usual);
assert!((doc["doc"]["participation"]["ratio"].as_f64().expect("p̃") - 100.0 / W as f64).abs() < 1e-12);
// A refused ballot, an expired one, are no vote.
ballot(&state, &doc_id, &p, "refused", 1).await;
ballot(&state, &doc_id, &p, "expired", 2).await;
File diff suppressed because it is too large Load Diff
@@ -96,3 +96,6 @@ page, la langue et la taille de l'écran. Les retours se traitent dans trustinWa
| 2026-11-03 | automate | local, lot U sur `6fb8238` (le lecteur refait : l'ordre en une ligne au bout de sa section, poignées sur place et vote ; oui pour passer · non pour bloquer ; quorum de l'auteur ; panneau sans onglets ; C3, C4, C6, C19 à C21, C23 à C26, C34, M1 repris) | C1–C37, M1 | 38 / 38 verts (40 tests) |
| 2026-11-03 | automate | local, lot T2 sur `f27ee08` (les trois phrases de F1.1, F1.2 et N1.1 ; l'espace perdu du vote déplié ; C34 lit la ligne entière, C37 « ne change pas ») | C1–C37, M1 | 38 / 38 verts (40 tests), du premier coup |
| 2026-11-03 | automate | local, lot U2 sur `bb4e7b7` (les mineurs de la relecture de M7 : cibles de 44 px et trois lectures entières sur téléphone, M2 ; « Proposer cet ordre » dit pourquoi, C35 ; une information à un seul endroit, C19, C36 ; l'en-tête et les changements d'inertie d'un module, C38 ; C25 et C26 lisent l'inertie dans « Inertie ») | C1–C38, M1, M2 | 40 / 40 verts (42 tests), du premier coup |
| 2026-11-03 | automate | local, lot T3 sur `b2d653e` (N1.1 et F1.2 sans chiffre daté, chaque phrase vraie pour tout W et tout quorum ; aucun contrôle changé) | C1–C38, M1, M2 | 40 / 40 verts (42 tests) au second passage ; le premier, 40 / 42 : C33 et C38 tombés sur `net::ERR_NETWORK_CHANGED` (le réseau du poste a changé pendant le passage, vu dans leurs traces) |
| 2026-11-03 | automate | local, lot T3b sur `582d6ba` (après la relecture de `2ce2028` : la phrase de G de N1.1, « autant de « pour » » ; aucun contrôle changé) | C1–C38, M1, M2 | 40 / 40 verts (42 tests) au second passage ; le premier, 40 / 42 : C8 et C32 tombés sur `net::ERR_NETWORK_CHANGED` (modules de l'interface non chargés, vu dans leurs traces) |
| 2026-11-03 | automate | local, lot T3c sur `42c803e` (après la relecture de `e7ab82f` : « à la participation habituelle » à la place de « comme d'habitude » dans F1.2 et N1.1, « le quorum de l'article », « la part exigée », « repose sur moins de 5 propositions », « ramenée » ; aucun contrôle changé) | C1–C38, M1, M2 | 40 / 40 verts (42 tests), du premier coup (19 h 51 - 19 h 55, sous le verrou `/tmp/ld-e2e.lock`) |
@@ -0,0 +1,259 @@
# Lot T3c : la liste fermée des phrases de F1.2 et N1.1
> Préparé le 2026-11-03 (lot T3c, branche `lot/t3c-habituelle`), après la relecture indépendante de
> `e7ab82f` et le complément d'orch du même soir : « que T3c soit le dernier tour ». Remise telle
> quelle au relecteur. Elle donne **toutes** les phrases de F1.2 « Paramètres par défaut » et de N1.1
> « Niveaux d'inertie », dans leur texte final (le français fait foi ; en et es disent la même chose,
> mot pour mot dans `seeds/acte-engagement-certification.json`). Pour chacune : ce qu'elle affirme, et
> le test qui la vérifie contre le moteur avec sa grille, ou « rien à vérifier » (une définition, une
> règle sans nombre). Ce qui a changé depuis `e7ab82f`, avant et après, avec ses raisons :
> `textes-quorum-seed.md`, « Après la relecture de e7ab82f ». F1.1 n'est pas touché (ordre de T3c).
## La grille
Les tests nommés sont dans `crates/ld-server/tests/seed_quorum_texts.rs`, sauf mention. **La grille
T3c** (`grid()`, 85 100 cas) :
- **W** : 100, 101, 1 000, 3 000, 5 707, 7 224, 10 000, 1 000 000, 10 000 000 (`ELECTORATES` ; 100 et
10 000 000 sont les bornes de `wot::PLAUSIBLE`, la toile que le serveur tient pour vraie).
- **La participation habituelle** : la référence (moins de 5 propositions : 2 × 50 votants), puis les
médianes 1, 2, W/100 − 1, W/100, W/100 + 1, 12, 40, 50, 100, 120, 1 000, W/2, W/2 + 1 et W (celles de
1 à W). Chacune passe par `Participation::of`, comme en production : **une médiane sous 1 % de W ou
au-dessus de 50 % de W est ramenée à la borne**, et c'est la valeur bornée qui est la participation
habituelle (W 7 224, médiane 40 : 72,24 votants). Cette valeur n'est pas toujours un nombre entier de
votants : la part qu'y demande le moteur se lit sur une toile cent fois plus grande (`share_at`, le
moteur ne lit que T'/W ; vérifié contre le moteur sur les nombres entiers).
- **Le quorum de l'article** : chaque quorum qu'un auteur peut fixer, de 2 à W, jusqu'à W = 1 000 ; au-delà,
2, 3, 11, 12, 13, 49, 50, 51, 100, 1 000, W/2, W − 1, W, et autour de la participation habituelle et de
la médiane (l'entier en dessous, au-dessus, et le suivant).
- **Les cinq crans.**
Certains tests ont leur propre grille, dite à leur ligne. « Vu rouge » : le test échoue sur le texte de
`e7ab82f` (8 tests, sortie gardée), ou sous une mutation du code, défaite aussitôt (quatre mutations,
en bas).
## F1.2 « Paramètres par défaut »
1. « Les valeurs des lettres de la formule (voir « Formule du seuil WoT ») et la façon dont le vote se
déroule. »
- Affirme : ce que contient l'article. **Rien à vérifier.**
2. Intertitre « **Un vote permanent, sans durée** ». **Rien à vérifier.**
3. « Chaque version se vote à tout moment, sans échéance. »
- Affirme : une règle sans nombre. **Rien à vérifier** sur la grille.
4. « Chacun peut changer ou retirer son vote : le dernier fait foi. »
- Affirme : une règle sans nombre. **Rien à vérifier** sur la grille. Tenue ailleurs, sans être reprise
par T3c : `ld-engine` `ballot::the_last_one_stands_in_the_order_of_the_chain`,
`tests/ballots.rs` `the_last_one_stands_in_the_order_of_the_chain`. *À savoir* : sur une version
retenue par une objection, on ne peut que retirer son vote ou passer à « contre » (ADR 0010) ; la
phrase ne le dit pas. Hors du champ de T3c (ni nombre, ni part, ni terme défini) : laissée, à
trancher.
5. « Une proposition entre en vigueur dès qu'elle atteint son seuil. »
- Affirme : une règle sans nombre (le seuil est F1.1). **Rien à vérifier** sur la grille. *À savoir* :
une version retenue par une objection n'entre pas en vigueur (ADR 0010), même au seuil ; même
remarque que la phrase 4.
6. « S'il y a déjà un texte en vigueur, il lui faut en plus une marge (voix pour moins voix exigées) plus
large que celle de ce texte. »
- Affirme : une règle sans nombre. **Rien à vérifier** sur la grille ; tenue par `ld-engine`
`compose::a_rival_must_beat_the_version_in_force`.
7. « Le texte remplacé redevient une proposition, avec ses votes : il peut revenir. »
- Affirme : une règle sans nombre. **Rien à vérifier** ; tenue par `tests/api.rs`
`a_rival_replaces_the_seed_and_the_seed_returns_among_proposals`.
8. « Si plusieurs propositions y parviennent, celle qui a la marge la plus large entre en vigueur. »
- Affirme : une règle sans nombre. **Rien à vérifier** ; tenue par `ld-engine`
`compose::rivals_on_one_unit_yield_one_winner`.
9. Intertitre « **Les lettres** ». **Rien à vérifier.**
10. « **W** : le nombre de membres de la toile de confiance Ğ1, relu sur la chaîne toutes les 6 heures. »
- Affirme : une définition, et le nombre 6.
- Test : `every_number_of_the_quorum_texts_is_the_engine_s` (6 = `wot::REFRESH` ; tout chiffre que
rien ne justifie fait échouer), le même sur chaque W de la grille.
11. « **T** : les votes exprimés sur la version, pour et contre. » — une définition. **Rien à vérifier.**
12. « **Q**, le quorum : sous ce nombre de votants, ceux qui manquent comptent comme « non ». »
- Affirme : sous Q votants, la part se demande à Q votants, les absents comptés « non ».
- Test : `under_the_quorum_it_takes_as_many_for_as_if_the_quorum_had_voted` — W de la grille, chaque
quorum de 2 à W jusqu'à W = 10 000 (au-delà : 2, 3, 12, 50, 100, 1 000, W/2, W − 1, W), chaque
participation de la grille (les deux bornes y sont), les cinq crans ; le groupe d'essai de 1 à
40 membres, quorum 1 à W ; 833 105 cas. Vu rouge sous la mutation 2.
13. « Chaque article prend celui de son cran : 12, 12, 50, 50 et 50 dans Monnaie libre, du cran 1 au
cran 5. »
- Affirme : les quorums par cran, et qu'un article sans quorum à lui prend celui de son cran.
- Tests : `every_number_of_the_quorum_texts_is_the_engine_s` (les cinq nombres, lus dans le seed) ;
`tests/quorum.rs` `each_level_has_its_quorum_and_every_evaluation_says_it` (chaque évaluation
sur le quorum de son cran).
14. « L'auteur de la première version d'un article, un administrateur pour les textes de départ, peut en
fixer un autre tant que l'article ne garde la trace d'aucun vote. »
- Affirme : une règle sans nombre (qui, jusqu'à quand). **Rien à vérifier** sur la grille ; tenue par
`tests/quorum.rs` `the_author_of_an_article_sets_its_quorum_before_the_first_vote`,
`in_monnaie_libre_a_quorum_holds_two_voices_and_a_ballot_counts_even_pending`, et
`tests/ballots.rs` `a_vote_exists_for_every_state_of_the_buffer` (lot T2).
15. « Dans Monnaie libre, jamais moins de 2 : une seule voix ne fait jamais passer un texte. »
- Affirme : le quorum le plus bas est 2 ; un seul « pour » ne passe jamais, quels que soient les
« contre ».
- Tests : `every_number_of_the_quorum_texts_is_the_engine_s` (2 = `quorum_bounds(W, false)`, le même
sur chaque W) ; `under_the_quorum_it_takes_as_many_for_as_if_the_quorum_had_voted` (sa grille, plus
haut : à chaque cas de Monnaie libre, 1 « pour » avec 0, 1, Q ou W − 1 « contre » ne passe pas ; au
quorum 2, deux « pour » sur chaque W et à chaque cran) ; `tests/quorum.rs`
`in_monnaie_libre_a_quorum_holds_two_voices_…` (un quorum de 1 refusé).
16. « **B = 0,1** : dans la toile de confiance, `B^W` est si petit qu'il ne compte pas. »
- Affirme : 0,1, et que B^W ne change aucun seuil dans la toile.
- Tests : `every_number_of_the_quorum_texts_is_the_engine_s` (0,1 = `FormulaParams::DEFAULT_BASE`) ;
`b_to_the_power_w_never_counts_in_the_web_of_trust` — W de la grille et 102, 5 000, 5 708, chaque
participation de la grille, quorums de 2 à W (échantillon), neuf nombres de votants par cas,
41 505 cas : le seuil avec B est celui sans B. Vu rouge sous la mutation 2.
17. « **M** et **G** : donnés par le cran d'inertie de l'article (voir « Niveaux d'inertie »). »
- Affirme : M et G sont ceux du cran (G aussi de la participation habituelle, phrase suivante).
- Test : `the_formulas_of_the_texts_are_those_the_engine_computes` — W 2, 40 et ceux de la grille,
chaque participation de la grille, quorums 1, 2, 12, 50, ⌈p̃ × W⌉, W/2, W, douze nombres de
votants, les cinq crans, 19 950 cas par langue : M du cran, G écrit comme N1.1 l'écrit égal à
celui du moteur. Vu rouge sous les mutations 1 et 2.
18. « G n'est pas fixé à la main : il se déduit de la participation habituelle du groupe. »
- Affirme : G vient de la participation habituelle — la valeur bornée, pas la médiane brute.
- Tests : `g_gives_the_share_of_the_level_at_the_usual_turnout_beyond_the_article_s_quorum` (la
grille T3c : G écrit avec p̃ la participation habituelle divisée par W est celui du moteur, à
chaque quorum) ; `the_formulas_…` (ci-dessus). Vus rouges sous la mutation 1.
19. Intertitre « **Par défaut** ». **Rien à vérifier.**
20. « Le cran par défaut est le 3 (moyenne) : M = 55 %, un quorum de 50 dans Monnaie libre, et, au-delà du
quorum, le groupe demande 75 % de « pour » à sa participation habituelle. »
- Affirme : le cran 3, son nom, M = 55 %, le quorum 50, et, quand la participation habituelle
atteint le quorum, une part exigée de 75 % à cette participation.
- Tests : `every_number_of_the_quorum_texts_is_the_engine_s` (3, moyenne, 55, 50, 75 : le cran par
défaut du moteur, son M, son s, son quorum dans le seed) ;
`the_share_of_a_level_is_asked_at_the_usual_turnout_beyond_the_article_s_quorum` (la grille T3c,
donc le cran 3 à chaque quorum, dont 50 : à la participation habituelle, s exactement quand elle
atteint le quorum — 16 985 cas, dont 2 375 où la médiane était sous 1 % de W et 7 365 au-dessus de
50 % ; jugée sur le quorum, plus bas que s, sinon — 68 115 cas). Vu rouge sur le texte de
`e7ab82f` (« quand il vote comme d'habitude ») et sous la mutation 1.
21. « Tout nouvel article commence à ce cran. »
- Affirme : un article créé est au cran 3.
- Test : `tests/quorum.rs` `the_author_of_an_article_sets_its_quorum_before_the_first_vote` (ajouté
par T3c : l'article « Nouveau » est au cran 3). Vu rouge sous la mutation 3.
22. « Au départ, aucun article n'est en vigueur. »
- Affirme : une règle sans nombre. **Rien à vérifier** sur la grille ; tenue par
`tests/seed_proposals.rs` `a_new_base_is_born_with_three_seed_proposals_and_no_article_in_force`.
23. « Raison d'être, Unicité du compte et Réciprocité sont des Propositions seed, mises en avant pour
lancer le vote, au cran 2 (basse). »
- Affirme : les trois titres, le cran 2 et son nom.
- Tests : `every_number_of_the_quorum_texts_is_the_engine_s` (les titres des versions `seedProposal`
du seed, `seed::SEED_PROPOSAL_LEVEL`) ; `tests/seed_proposals.rs` (ci-dessus).
24. « Le titre du document est au cran 4 (haute), l'ordre des articles de chaque section au cran 2, tous
les autres articles au cran 3. »
- Affirme : trois crans lus dans le seed.
- Test : `every_number_of_the_quorum_texts_is_the_engine_s` (`modules.title.inertia`,
`modules.order.inertia`, chaque `inertia` du seed, toutes égales).
## N1.1 « Niveaux d'inertie »
1. « À chaque cran, le groupe demande une part de « pour » parmi les votants (voir « Formule du seuil
WoT »). »
- Affirme : qu'il y a une part, définie plus bas (phrase 4). **Rien à vérifier** à elle seule.
2. « Chaque cran a aussi son quorum : sous le quorum de l'article, les votants qui manquent comptent
comme « non », et il faut autant de « pour » que si ce quorum avait voté. »
- Affirme : sous le quorum de l'article (celui de son cran, ou celui que son auteur a fixé), les
« pour » qui passent sont le seuil du quorum, et un décompte passe dès que ses « pour » l'atteignent.
- Test : `under_the_quorum_it_takes_as_many_for_as_if_the_quorum_had_voted` (sa grille : F1.2,
phrase 12). Vu rouge sur le texte de `e7ab82f` (« sous le quorum », « si le quorum ») et sous la
mutation 2.
3. « La part exigée dépend du cran et du nombre de votants, comparé à la participation habituelle du
groupe : au-delà de ce quorum, plus il y a de votants, plus elle baisse, jusqu'à la majorité M quand
tout le monde vote. »
- Affirme : la part exigée dépend de k, de T' et de la participation habituelle ; au-delà du quorum de
l'article, elle baisse strictement à chaque votant de plus ; à W votants, M.
- Tests : `the_share_asked_falls_beyond_the_article_s_quorum_down_to_m` (la grille T3c ; chaque
nombre de votants de 0 à W sur W 100 et 101, ailleurs autour du quorum, de la participation
habituelle et de la médiane, W/2, W − 1, W : 808 390 paires au-delà du quorum, strictement
décroissantes, 767 455 en dessous, égales ; M à W ; et la part en voix entières, ⌈part × T⌉ / T,
qui remonte de 9 sur 12 à 10 sur 13 à W 5 707) ; la dépendance à la participation habituelle :
`the_share_of_a_level_is_asked_at_the_usual_turnout_…` (phrase 5). Vu rouge sur le texte de
`e7ab82f` (« La part », « au-delà du quorum ») et sous la mutation 2.
4. « `Part exigée = M + (1 − M) × (1 − (T'/W)^G)`, où T' est le nombre de votants, ou le quorum de
l'article s'il en manque. »
- Affirme : la formule, et T' = max(T, Q) avec Q le quorum de l'article.
- Test : `the_formulas_of_the_texts_are_those_the_engine_computes` (sa grille : F1.2, phrase 17 ;
T' et la part, évalués tels qu'écrits, égaux au moteur). Vu rouge sous les mutations 1 et 2.
5. « **Les cinq crans** : le quorum dans Monnaie libre, la part exigée au-delà du quorum de l'article, à la
participation habituelle, puis quand tout le monde vote, et ce qui est à ce cran au départ. »
- Affirme : ce que disent les colonnes des cinq lignes ; la deuxième vaut au-delà du quorum de
l'article, à la participation habituelle.
- Test : `the_share_of_a_level_is_asked_at_the_usual_turnout_beyond_the_article_s_quorum` (la
grille T3c, F1.2 phrase 20). Vu rouge sur le texte de `e7ab82f`.
6. à 10. Les cinq lignes, par exemple « **Cran 1 · très basse** : quorum 12 ; 60 % à la participation
habituelle, 50 % quand tout le monde vote. Aucun article au départ. » ; puis 2 · basse : 12 ; 67 %,
50 % ; Raison d'être, Unicité du compte, Réciprocité, et l'ordre des articles de chaque section ;
3 · moyenne : 50 ; 75 %, 55 % ; le cran par défaut : tous les autres articles, et chaque nouvel
article ; 4 · haute : 50 ; 83 %, 60 % ; le titre du document ; 5 · très haute : 50 ; 90 %, 66 % ;
aucun article au départ.
- Affirment : le quorum du cran, s_k à la participation habituelle (au-delà du quorum de l'article),
M_k quand tout le monde vote, ce qui est au cran au départ.
- Tests : `every_number_of_the_quorum_texts_is_the_engine_s` (chaque nombre, chaque nom de cran, ce
qui est au départ, construits depuis le moteur et le seed) ;
`the_share_of_a_level_is_asked_at_the_usual_turnout_beyond_the_article_s_quorum` (s_k et M_k sur la
grille T3c) ; `the_participation_habituelle_is_the_median_brought_back_within_its_bounds` (pourquoi
le terme défini). Vus rouges sur le texte de `e7ab82f` (« comme d'habitude ») ; le second sous la
mutation 1.
11. « **La participation habituelle** est la médiane du nombre de votants des propositions du groupe
votées depuis un an. »
- Affirme : une définition (et « un an »).
- Tests : `every_number_of_the_quorum_texts_is_the_engine_s` (`participation::WINDOW_DAYS` = 365) ;
`tests/inertia.rs` `the_usual_participation_is_the_median_of_five_voted_proposals`,
`the_usual_participation_counts_the_statuses_it_names_and_only_those`,
`a_withdrawn_proposal_leaves_the_usual_participation`.
12. « Tant qu'elle repose sur moins de 5 propositions, elle vaut deux fois le quorum de référence du
document : 100 votants dans Monnaie libre. »
- Affirme : moins de 5 propositions votées dans l'année, la référence 2 × 50 = 100 votants, avant les
bornes (phrase 14).
- Tests : `every_number_of_the_quorum_texts_is_the_engine_s` (5 = `Participation::MIN_SAMPLE`,
100 = 2 × `voteFloor`) ; `the_participation_habituelle_is_the_median_brought_back_within_its_bounds`
(sur chaque W et chaque médiane de la grille, 4 propositions donnent la référence) ;
`tests/inertia.rs` `the_usual_participation_is_the_median_of_five_voted_proposals` (cinq
propositions votées, dont une il y a plus d'un an : la référence revient) ;
`the_reference_turnout_is_a_parameter_the_bounds_bring_back` (100 votants de W 200 à 10 000, la
borne ailleurs). Vus rouges sur le texte de `e7ab82f` (« Tant que le groupe n'a pas voté sur 5
propositions ») ; le dernier sous la mutation 1.
13. « Elle ne dépend pas du quorum d'un article. »
- Affirme : fixer le quorum d'un article ne change ni la participation habituelle ni G.
- Tests : `tests/quorum.rs` `in_monnaie_libre_a_quorum_holds_two_voices_and_a_ballot_counts_even_pending`
(ajouté par T3c : I1 au quorum 20, la participation servie et G de chaque cran restent, p̃ =
100 / W) ; `g_gives_…` (G le même à chaque quorum de la grille). Vu rouge sous la mutation 4.
14. « Elle est ramenée entre 1 % et 50 % de l'électorat, et se mesure une fois par jour. »
- Affirme : la valeur bornée est la participation habituelle ; 1, 50 ; une fois par jour.
- Tests : `every_number_of_the_quorum_texts_is_the_engine_s` (`Participation::LOWEST`, `HIGHEST`,
`participation::EVERY_HOURS` = 24) ;
`the_participation_habituelle_is_the_median_brought_back_within_its_bounds` (sur chaque W et
chaque médiane : la valeur est la médiane, ou la référence, ramenée ; le cas de la relecture,
W 7 224, médiane 40 : 72,24 votants ; sur la grille, 1 175 cas où la médiane, sous 1 %, atteint le
quorum et où la part à la médiane dépasse s, 10 270 au-dessus de 50 % où elle est sous s) ;
`ld-server` `participation::a_measure_is_taken_again_after_a_day`. Vus rouges sur le texte de
`e7ab82f` (« Elle reste entre ») et sous la mutation 1.
15. « **G** se calcule pour que la part exigée, au-delà du quorum de l'article, soit exactement celle du
cran à la participation habituelle : `G = ln(1 − (s − M)/(1 − M)) / ln(p̃)`, où s est cette part du
cran (60, 67, 75, 83 ou 90 %) et p̃ la participation habituelle divisée par W. »
- Affirme : la formule de G ; à la participation habituelle, la courbe donne s ; la part exigée y est
s quand elle atteint le quorum de l'article ; s est la part de la liste ; p̃ est la valeur bornée
sur W.
- Tests : `g_gives_the_share_of_the_level_at_the_usual_turnout_beyond_the_article_s_quorum` (la
grille T3c : 16 985 cas au-delà, s exactement ; 68 115 en dessous, plus bas, jugés sur le quorum) ;
`the_formulas_of_the_texts_are_those_the_engine_computes` ; `every_number_of_the_quorum_texts_is_the_engine_s`
(60, 67, 75, 83, 90). Vu rouge sur le texte de `e7ab82f` (« quand le groupe vote comme
d'habitude ») et sous les mutations 1 et 2.
## Les mutations, défaites aussitôt
| | Mutation | Rouges |
|---|---|---|
| 1 | `Participation::of` ne ramène plus la médiane dans ses bornes (`ratio = raw`) | 6 : `g_gives_…`, `the_participation_habituelle_…`, `the_formulas_…`, `the_reference_turnout_…`, `the_share_of_a_level_…`, `under_the_quorum_…` |
| 2 | `judged_voters` sans quorum (`cast`) | 7 : `b_to_the_power_w_…`, `the_formulas_…`, `the_share_asked_falls_…`, `the_share_of_a_level_…`, `the_three_phrases_of_the_review_of_m6b_…`, `under_the_quorum_…`, `g_gives_…` |
| 3 | un nouvel article au cran 2 (`proposals.rs`) | `tests/quorum.rs` `the_author_of_an_article_sets_its_quorum_before_the_first_vote` |
| 4 | la participation calée sur le quorum d'un article (`docs.rs`) | `tests/quorum.rs` `in_monnaie_libre_a_quorum_holds_two_voices_…` |
Sur le texte de `e7ab82f`, avant le changement : 8 tests rouges, `every_number_…`, `g_gives_…`,
`the_participation_habituelle_…`, `the_reference_turnout_…`, `the_share_asked_falls_…`,
`the_share_of_a_level_…`, `the_texts_of_lot_t3_change_these_phrases_only`, `under_the_quorum_…`.
## Hors de la liste, pour information
- **F1.1**, non touché : « G : le gradient : plus il est grand, plus la part demandée monte quand peu de
gens votent » n'a pas d'effet sur un article dont l'auteur a fixé le quorum à W (la part y est M à
tout G). Un cas limite, laissé : F1.1 n'a pas d'amendement.
- **F1.2, phrases 4 et 5** : la version retenue par une objection (ADR 0010) n'y est pas dite. Règles
sans nombre, hors du champ de T3c ; à trancher si on veut les écrire.
- **L'interface** (`settings.reading`, `settings.share.note`, `settings.required.usual`) dit encore
« comme d'habitude » ; non touchée (ordre de T3c).
+37 -3
View File
@@ -103,7 +103,12 @@ Lots en cours, en copies de travail (`.claude/worktrees/agent-<id>`) :
copie de la production de 10 h 23 (écritures exactement annoncées) ; relecture « 84f015a : ok » inscrite
à 10 h 47 ; PRÊT M6c envoyé à orch à 10 h 48 ; **en ligne** (pipeline 40, `success` à 11 h 05).
- **U2** (après T2, défaut retenu par orch le 03/11 à 09 h 45) : les mineurs d'interface des relectures
de M7 et de M6c. **Lancé le 03/11 à 11 h 08.**
de M7 et de M6c. **Lancé le 03/11 à 11 h 08** ; **fini et fusionné à 11 h 39** (`6f6197c`) : neuf
points, C38 et M2 vus rouges, boucle verte du premier coup (302 Rust, 78 vitest, e2e 42 / 42). **M7b en
préparation** (`actes/2026-11-03-m7b-lecteur-mineurs.md`) : image à 11 h 45 ; répétition sur une copie
de la production de 11 h 40 (0 écriture) ; recette écran des points visibles ; relecture neuve lancée
à 11 h 51, « 6f6197c : ok » inscrite à 12 h 06 ; PRÊT M7b envoyé à orch à 12 h 07 ; **en ligne** (pipeline 41,
`success` à 12 h 23).
**M6 en ligne** depuis le 03/11 à 07 h 03 (`94ddb17`, pipeline 37) : H, S et V. Production `94ddb175` ;
`main` et `chantier/acte-certification` poussés vers origin par orch. Le dépôt des textes reste à `9e0f45a`
@@ -118,8 +123,27 @@ retirées (orch, puis l'intégrateur à 09 h 45).
**M6c en ligne** depuis le 03/11 à 11 h 05 (`84f015a`, pipeline 40) : lot T2, les trois phrases de
F1.1, F1.2 et N1.1 justes. Production `84f015ad` ; `main` et le chantier poussés vers origin par orch.
Copies retirées (orch, puis l'intégrateur à 11 h 07).
Suite : **U2** (les mineurs d'interface de M7 et M6c, lancé à 11 h 08), un sous-agent à la fois ; PRÊT
et actes par orch.
**M7b en ligne** depuis le 03/11 à 12 h 23 (`6f6197c`, pipeline 41) : lot U2, les mineurs du lecteur.
Production `6f6197cc` ; `main` et le chantier poussés vers origin par orch. Copies de production retirées
(orch ; l'intégrateur à 12 h 28).
**Les lots H, S, V, T, U, T2 et U2 sont en ligne.** **Lot T3 en cours** depuis le 03/11 à 17 h 02
(ordre T3 d'orch, sur la réponse d'Yvv avant 16 h 56 : « Je valide textes-quorum-seed (dont le point 3,
pas de chiffre datés dans un texte voté). Tu peux lancer la livraison de decision. ») : l'exemple chiffré
de N1.1 sort des textes votés, la phrase « pas un nombre minimal de votants » réécrite vraie, « comme
d'habitude » au-delà du quorum (N1.1, F1.2), F1.1 laissé ; amendements gardés qui suivent T2.
**Fusionné** le 03/11 à 17 h 44 (`0b4923f`, `2ce2028`). Relecture de `2ce2028` : à reprendre (18 h 12, la
phrase de G de N1.1) → **lot T3b**, fusionné à 18 h 47 (`e7ab82f`) ; boucle verte (18 h 47 - 18 h 54), répétition
réseau coupé (18 h 54), image (18 h 56 - 19 h 01). Relecture de `e7ab82f` : **à reprendre** (19 h 16 : « comme
d'habitude » se lit comme la médiane réelle, le moteur prend la participation bornée) → **lot T3c en cours**
depuis 19 h 18 (sous-agent, branche `lot/t3c-habituelle`) : le terme défini « à la participation habituelle »,
« sous le quorum de l'article », la grille des tests étendue ; puis boucle, répétition, relecture neuve, acte
M8 « déploie » (`actes/2026-11-03-m8-chiffres-dates.md`, non figé). Listes d'attente : ci-dessous (Actes). Bases de test restées sous `/tmp`, toutes synthétiques,
aucune de la production : **purgées** sur ordre d'orch (PURGE-LD, 03/11 à 12 h 31), le 03/11 à 12 h 30-12 h 31 :
les neuf dossiers des sous-agents (`ld-relis-m6`, `-m7`, `-m6c`, `-m7b`, `ld-u2-data`, `ld-u-data`,
`ld-h-data`, `ld-u-shots`, `ld-u2-shots`), 688 restes des tests cargo et scripts e2e des lots ; les sept
copies de travail des lots fusionnés (sans `--force`, aucun refus) et leurs 13 branches (`git branch -d`,
aucune poussée de suppression). Restent `/tmp/ld-e2e`, son verrou et `/tmp/ld-h-shots` (captures du lot
H, hors de l'ordre).
Yvv relit les quatre textes en ligne. Au prochain tour, avec ses retours :
- N1.1 : G se calcule sur p̃ rapporté à W ;
@@ -219,6 +243,16 @@ Défauts posés par orch, sans question (Yvv peut les corriger) :
Restes mineurs de `71819f9` et du lot B : faits dans le lot D.
- M7b (lot U2, les mineurs du lecteur) : **exécuté** le 03/11/2026 par orch sous mandat, 12 h 07 – 12 h 26 (pipeline 41 `success` à 12 h 23) ; santé `6f6197cc` ; redémarrage à froid propre ; comptes identiques ; dépôt des textes à `9e0f45a` ; image de retour `previous` = `84f015a`. Copies retirées : orch, puis l'intégrateur à 12 h 28. Figé le 03/11 à 12 h 07 sur `6f6197c` (`actes/2026-11-03-m7b-lecteur-mineurs.md`) ; interface seule, aucune écriture en base ; répétition et recette sur une copie de la production de 11 h 40 ; relecture « 6f6197c : ok » inscrite à 12 h 06 ; PRÊT M7b envoyé à orch à 12 h 07.
Liste d'attente (relecture de `6f6197c`, M7b ; pas de lot sans mot d'orch) :
- **le vote d'un changement d'inertie de module ne dit pas le cran visé** (seulement le cran où il se
vote ; « vers N / 5 » dans l'étiquette pour lecteur d'écran seulement : `VoteFold.svelte:167`, `:177`) ;
la pastille de U2 y mène directement ; aucun changement de ce type ouvert en production ;
- l'en-tête ne suit la liste qu'en lecture « En vigueur » (`+page.svelte:159-160`) ;
- commentaire du test moteur (`threshold.rs`, « 85 % of the quorum ») : les paramètres de référence, pas
le cran 2.
Liste d'attente (relecture de `84f015a`, M6c) :
- **pour Yvv** : N1.1 « qui n'est pas un nombre minimal de votants » est vrai pour les quorums par
cran, faux pour un quorum d'auteur bas (2 ou 3 à tout cran, 6 au cran 3…) où le moteur demande Q
@@ -11,8 +11,423 @@
> **Mis à jour le 2026-11-03 par le lot T2** (branche `lot/t2-phrases`), après la relecture
> indépendante de M6b : ces textes sont en ligne depuis M6b (03/11, 08 h 02), et trois de leurs
> phrases disaient plus que les règles. Elles sont reprises ci-dessous, avant et après
> (« Lot T2 »). Les blocs de texte de ce fichier sont ceux du seed d'aujourd'hui, phrases
> reprises comprises. Rien du lot T2 n'est en ligne.
> (« Lot T2 »). *(En ligne depuis M6c, le 03/11 à 11 h 05.)*
>
> **Mis à jour le 2026-11-03 par le lot T3** (branche `lot/t3-chiffres`), après ta validation du
> jour : N1.1 perd son exemple chiffré, et trois phrases, deux de N1.1 et une de F1.2, sont écrites
> vraies pour tout W et tout quorum (« Lot T3 », ci-dessous). Les blocs de texte de ce fichier sont
> ceux du seed d'aujourd'hui. Rien du lot T3 n'est en ligne.
>
> **Repris le 2026-11-03 par le lot T3b** (branche `lot/t3b-g`), après la relecture indépendante de
> `2ce2028`, avant la mise en ligne : la phrase de G (N1.1) écrite vraie sous le quorum, « autant de
> « pour » » en français, le test des nombres honnête sur « 100 votants » (« Après la relecture de
> 2ce2028 », ci-dessous). Le même amendement, avec sa nouvelle empreinte ; rien n'est en ligne.
>
> **Repris le 2026-11-03 par le lot T3c** (branche `lot/t3c-habituelle`), après la relecture
> indépendante de `e7ab82f`, avant la mise en ligne : le terme défini « à la participation
> habituelle » à la place de « comme d'habitude », qui se lisait comme la médiane réelle et devenait
> faux quand elle sort de ses bornes ; puis un passage complet sur F1.2 et N1.1, phrase par phrase
> (« Après la relecture de e7ab82f », ci-dessous). La liste fermée de leurs phrases, chacune avec le
> test qui la vérifie et sa grille, est dans `t3c-liste-fermee.md`. Les mêmes amendements, avec leurs
> nouvelles empreintes ; rien n'est en ligne.
## Lot T3 : aucun chiffre daté, chaque phrase vraie pour tout W
Ta réponse du 03/11 (avant 16 h 56), mot pour mot : « Je valide textes-quorum-seed (dont le point
3, pas de chiffre datés dans un texte voté). Tu peux lancer la livraison de decision. »
**Les points tranchés le 03/11** (« Points à trancher », plus bas) :
- **point 3 : retiré.** L'exemple de N1.1 (7 224 membres, 120 votants, et ce qui en était calculé)
sort des trois langues. Rien ne le remplace : un exemple qui ne porterait que des paramètres, vrai
pour tout W, ne dirait rien de plus que la liste des crans ;
- **points 1, 2, 4 et 8 : le défaut reste.** 1 : ton intention de remonter l'inertie n'est pas
écrite ; 2 : « Propositions seed » reste le mot du texte voté ; 4 : le groupe d'essai n'est pas
nommé, les quorums sont ceux « dans Monnaie libre » ; 8 : F1.2 garde « tant que l'article ne garde
la trace d'aucun vote » (le texte en ligne), et l'interface ta formule « avant le premier vote ».
**Est daté** tout nombre qui dépend de l'état de la toile (W) ou d'une participation à une date.
Restent les paramètres et les règles : les quorums 12 · 12 · 50 · 50 · 50, M et s de chaque cran,
B = 0,1, les bornes 1 % et 50 %, « jamais moins de 2 », 6 heures, un an, une fois par jour,
5 propositions, la référence « deux fois le quorum de référence : 100 votants » (2 × 50). F1.1 et
F1.2 n'avaient aucun chiffre daté. Le test des nombres (`every_number_of_the_quorum_texts_is_the_engine_s`)
n'admet plus que des paramètres : chacun vient du seed ou d'une constante du moteur ; aucune toile ni
participation n'y entre (« 100 votants » est un paramètre, 2 × 50, pas une participation vraie sur
toute toile : voir « Après la relecture de 2ce2028 »). Vu rouge sur le texte de T2 : N1.1 portait
7 224 · 120 · 72 · 81 · 90 · 100 · 108 · 75 % · 90 · 9 · 3 · 39 · 11, que rien ne justifie.
Ensuite, **chaque phrase des trois textes relue** pour tout W et tout quorum dans les bornes
(2 à W dans Monnaie libre, 1 à W dans le groupe d'essai), tout cran, toute participation entre 1 %
et 50 %. Trois phrases étaient fausses quelque part, chacune prouvée par un test ; elles sont
corrigées au plus court. Rien d'autre ne change ; les titres restent. *(La relecture de `2ce2028`
en a trouvé une quatrième, la phrase de G : reprise ci-dessous.)*
### Après la relecture de e7ab82f
La relecture indépendante de `e7ab82f` rend « à reprendre » pour un point, « comme d'habitude » ; orch
demande ensuite un passage complet sur F1.2 et N1.1, phrase par phrase (« que T3c soit le dernier
tour »). T3 n'étant pas en ligne, les amendements `2026-11-03-f1-2-chiffres` et
`2026-11-03-n1-1-chiffres` sont repris eux-mêmes (leurs nouvelles empreintes : « La garde, en
production »), sans en ajouter. F1.1 ne change pas. **La liste fermée** des phrases de F1.2 et N1.1,
chacune avec ce qu'elle affirme et le test qui la vérifie sur sa grille, est dans
`t3c-liste-fermee.md`, remise telle quelle au relecteur.
**Le terme défini.** N1.1 définit la participation habituelle : la médiane du nombre de votants des
propositions votées depuis un an, ou deux fois le quorum de référence quand elle repose sur moins de
5 propositions, **ramenée entre 1 % et 50 % de l'électorat** ; le moteur calcule G sur cette valeur
bornée (`Participation::of`). « Quand le groupe vote comme d'habitude » se lit d'abord comme la médiane
réelle, et sous cette lecture, trois phrases et les cinq lignes des crans deviennent fausses dès que la
médiane sort de ses bornes. **L'exemple de la relecture** : une toile de 7 224 membres (celle de 2024),
une médiane de 40 votants (0,55 % de W, ramenée à 1 % : 72,24 votants), cran 2, quorum 12. À 40
votants, au-delà du quorum, la part exigée est de 68,7 % : il faut 28 « pour » sur 40, pas 27 (67 % de
40, arrondi au-dessus) ; 27 « pour » et 13 « contre » ne passent pas. À la participation habituelle,
72,24 votants, la part est de 67 % exactement. Le cas est réaliste dans Monnaie libre aujourd'hui. Le
test de T3 sautait ces cas (`if part.bounded { continue; }`) : la grille de T3c les prend tous, la
participation habituelle étant la valeur bornée (prouvé par
`the_participation_habituelle_is_the_median_brought_back_within_its_bounds`, qui calcule aussi
l'exemple).
Chaque phrase changée, avant (le texte de `e7ab82f`) et après :
- **F1.2, « Par défaut »**.
- **Avant** : « …un quorum de 50 dans Monnaie libre, et, au-delà du quorum, le groupe demande 75 % de
« pour » quand il vote comme d'habitude. »
- **Après** : « …un quorum de 50 dans Monnaie libre, et, au-delà du quorum, le groupe demande 75 % de
« pour » à sa participation habituelle. »
- en : « …asks for 75% of votes in favour when it votes as usual. » → « …at its usual turnout. » ;
es : « …un 75 % de votos a favor cuando vota como de costumbre. » → « …con su participación
habitual. »
- **Pourquoi** : le terme défini (l'exemple ci-dessus). « Au-delà du quorum » reste : sous « Par
défaut », juste après « un quorum de 50 », il se lit comme ce quorum-là, celui d'un article au cran
par défaut ; lu comme le quorum de l'article, il est vrai aussi.
- **N1.1, la phrase du quorum** (point 3 de l'ordre, défaut appliqué mot pour mot).
- **Avant** : « Chaque cran a aussi son quorum : sous le quorum, les votants qui manquent comptent
comme « non », et il faut autant de « pour » que si le quorum avait voté. »
- **Après** : « Chaque cran a aussi son quorum : sous le quorum de l'article, les votants qui manquent
comptent comme « non », et il faut autant de « pour » que si ce quorum avait voté. »
- en : « below the quorum, […] as if the quorum had voted » → « below the article's quorum, […] as if
that quorum had voted » ; es : « por debajo del quórum, […] como si hubiera votado el quórum » →
« por debajo del quórum del artículo, […] como si hubiera votado ese quórum ».
- **Pourquoi** : juste après « son quorum » (celui du cran), « sous le quorum » se lisait d'abord comme
le quorum du cran, alors qu'un article peut avoir celui que son auteur a fixé. Le test de la phrase
reste vrai pour tout quorum dans les bornes (`under_the_quorum_it_takes_as_many_for_as_if_the_quorum_had_voted`).
- **N1.1, la phrase de la part** (premier paragraphe, la dernière).
- **Avant** : « La part dépend du cran et du nombre de votants, comparé à la participation habituelle
du groupe : au-delà du quorum, plus il y a de votants, plus elle baisse, jusqu'à la majorité M quand
tout le monde vote. »
- **Après** : « La part exigée dépend du cran et du nombre de votants, comparé à la participation
habituelle du groupe : au-delà de ce quorum, plus il y a de votants, plus elle baisse, jusqu'à la
majorité M quand tout le monde vote. »
- en : « The share depends […] beyond the quorum » → « The share asked depends […] beyond that
quorum » ; es : « La proporción depende […] más allá del quórum » → « La proporción exigida depende
[…] más allá de ese quórum ».
- **Pourquoi** : « la part » seule, après « une part de « pour » parmi les votants », peut se lire
comme la part de « pour » à apporter en voix entières, qui remonte parfois au-delà du quorum (toile
de 5 707 membres, participation de référence, cran 2, quorum 12 : 9 « pour » sur 12, 75 %, puis 10
sur 13, 76,9 %), alors que la part exigée, celle de la formule qui suit, baisse (73,5 %, puis
73,2 %). « Ce quorum » : la phrase d'avant en nomme deux, celui du cran et celui de l'article ; entre
celui du cran et un quorum d'auteur plus haut, la part ne baisse pas. Prouvé par
`the_share_asked_falls_beyond_the_article_s_quorum_down_to_m`.
- **N1.1, la formule de la part** (T').
- **Avant** : « …, où T' est le nombre de votants, ou le quorum s'il en manque. »
- **Après** : « …, où T' est le nombre de votants, ou le quorum de l'article s'il en manque. »
- en : « or the quorum if some are missing » → « or the article's quorum if some are missing » ; es :
« o el quórum si faltan » → « o el quórum del artículo si faltan ».
- **Pourquoi** : T' se calcule sur le quorum de l'article (F1.1 : « Q : le quorum de l'article ») ; la
raison de la phrase du quorum.
- **N1.1, l'introduction des crans**.
- **Avant** : « **Les cinq crans** : le quorum dans Monnaie libre, la part exigée au-delà du quorum,
quand le groupe vote comme d'habitude, puis quand tout le monde vote, et ce qui est à ce cran au
départ. »
- **Après** : « **Les cinq crans** : le quorum dans Monnaie libre, la part exigée au-delà du quorum de
l'article, à la participation habituelle, puis quand tout le monde vote, et ce qui est à ce cran au
départ. »
- en : « the share asked beyond the quorum, when the group votes as usual, » → « the share asked
beyond the article's quorum, at the usual turnout, » ; es : « la proporción exigida más allá del
quórum, cuando el grupo vota como de costumbre, » → « la proporción exigida más allá del quórum del
artículo, con la participación habitual, ».
- **Pourquoi** : le terme défini ; et « de l'article » : juste après « le quorum dans Monnaie libre »
(celui du cran), « au-delà du quorum » se lisait comme ce quorum-là. Pour un article dont l'auteur a
fixé un quorum au-dessus de la participation habituelle, elle-même au-dessus du quorum du cran, la
part du cran n'est pas demandée à la participation habituelle : les votants y sont jugés comme le
quorum de l'article, à une part plus basse que celle du cran, demandée à plus de votants qu'il n'en
vient (sur la grille, 68 115 cas où la participation habituelle n'atteint pas le quorum de
l'article).
- **N1.1, les cinq lignes des crans**.
- **Avant** : « 60 % comme d'habitude, 50 % quand tout le monde vote » (de même 67, 75, 83, 90 %).
- **Après** : « 60 % à la participation habituelle, 50 % quand tout le monde vote ».
- en : « 60% as usual » → « 60% at the usual turnout » ; es : « 60 % como de costumbre » → « 60 % con
la participación habitual ».
- **Pourquoi** : le terme défini.
- **N1.1, la participation habituelle de référence**.
- **Avant** : « Tant que le groupe n'a pas voté sur 5 propositions, elle vaut deux fois le quorum de
référence du document : 100 votants dans Monnaie libre. »
- **Après** : « Tant qu'elle repose sur moins de 5 propositions, elle vaut deux fois le quorum de
référence du document : 100 votants dans Monnaie libre. »
- en : « Until the group has voted on 5 proposals, it is » → « While it rests on fewer than 5
proposals, it is » ; es : « Hasta que el grupo haya votado 5 propuestas, vale » → « Mientras se
base en menos de 5 propuestas, vale ».
- **Pourquoi** : fausse une fois que le groupe a voté sur 5 propositions. La médiane ne compte que les
propositions votées depuis un an (la phrase d'avant) ; avec moins de 5 dans l'année, la référence
revient (`tests/inertia.rs`, `the_usual_participation_is_the_median_of_five_voted_proposals` : une
des cinq votée il y a plus d'un an, la référence revient). « Elle repose sur » renvoie aux
propositions de la phrase d'avant.
- **N1.1, les bornes**.
- **Avant** : « Elle reste entre 1 % et 50 % de l'électorat, et se mesure une fois par jour. »
- **Après** : « Elle est ramenée entre 1 % et 50 % de l'électorat, et se mesure une fois par jour. »
- en : « It stays between » → « It is kept between » ; es : « Se mantiene entre » → « Se acota
entre ».
- **Pourquoi** : c'est la définition sur laquelle tout le lot s'appuie : la participation habituelle
est la valeur ramenée. « Reste » se lit comme un constat (la médiane resterait d'elle-même entre les
bornes), et la première phrase, « est la médiane », serait fausse pour une médiane de 40 sur 7 224 ;
« est ramenée » dit la règle. En espagnol, « se mantiene » a les deux lectures ; « se acota » (« est
bornée ») n'en a qu'une.
- **N1.1, la phrase de G**.
- **Avant** : « **G** se calcule pour que la part exigée, au-delà du quorum, soit exactement celle du
cran quand le groupe vote comme d'habitude : `G = ln(1 − (s − M)/(1 − M)) / ln(p̃)`, où s est cette
part du cran (60, 67, 75, 83 ou 90 %) et p̃ la participation habituelle divisée par W. »
- **Après** : « **G** se calcule pour que la part exigée, au-delà du quorum de l'article, soit
exactement celle du cran à la participation habituelle : `G = ln(1 − (s − M)/(1 − M)) / ln(p̃)`, où
s est cette part du cran (60, 67, 75, 83 ou 90 %) et p̃ la participation habituelle divisée par W. »
- en : « beyond the quorum, is exactly that of the level when the group votes as usual: » → « beyond
the article's quorum, is exactly that of the level at the usual turnout: » ; es : « más allá del
quórum, sea exactamente la del nivel cuando el grupo vota como de costumbre: » → « más allá del quórum
del artículo, sea exactamente la del nivel con la participación habitual: ».
- **Pourquoi** : G se calcule sur la valeur bornée ; à la médiane réelle hors des bornes, la part n'est
pas s (l'exemple) ; « de l'article », comme l'introduction des crans.
**Ce qui est relu et laissé**, phrase par phrase, avec son test : `t3c-liste-fermee.md` (24 entrées pour
F1.2, intertitres compris, 15 pour N1.1). Trois points, hors du champ de T3c, sont dans « Points à trancher » (11, 12, 13) :
l'interface dit encore « comme d'habitude » ; F1.2 ne dit pas la version retenue par une objection ;
F1.1, G sans effet au quorum W.
**Les tests** (`crates/ld-server/tests/seed_quorum_texts.rs`, sauf mention), vus rouges sur le texte
de `e7ab82f` (8 tests), puis verts :
- une grille commune, `grid()` (85 100 cas) : W de 100 (la borne basse de `wot::PLAUSIBLE`) à
10 000 000 ; la référence et des médianes sous 1 % de W, dans les bornes et au-dessus de 50 %, chacune
ramenée par `Participation::of`, la participation habituelle étant la valeur bornée ; chaque quorum
d'auteur de 2 à W jusqu'à W = 1 000, un échantillon au-delà ; les cinq crans. Elle remplace
`as_usual_grid`, qui sautait les médianes hors des bornes ;
- renommés : `the_share_of_a_level_as_usual_is_asked_beyond_the_quorum` →
`the_share_of_a_level_is_asked_at_the_usual_turnout_beyond_the_article_s_quorum` ;
`g_gives_the_share_of_the_level_beyond_the_quorum_when_the_group_votes_as_usual` →
`g_gives_the_share_of_the_level_at_the_usual_turnout_beyond_the_article_s_quorum` ;
- nouveaux : `the_participation_habituelle_is_the_median_brought_back_within_its_bounds` (l'écart entre
la valeur bornée et la médiane, l'exemple de la relecture, et pourquoi le terme défini) ;
`the_share_asked_falls_beyond_the_article_s_quorum_down_to_m` ; dans `tests/quorum.rs`, la
participation et G inchangés quand un administrateur fixe le quorum d'un article de Monnaie libre, et
le cran 3 d'un nouvel article ;
- étendus à la grille : `under_the_quorum_…` (plus « une seule voix ne fait jamais passer un texte »),
`b_to_the_power_w_…`, `the_formulas_…` ; le test des nombres vérifie toujours tout ;
- quatre mutations du code, défaites aussitôt, chacune vue rouge (`t3c-liste-fermee.md`).
### Après la relecture de 2ce2028
La relecture indépendante de `2ce2028` rend « à reprendre » pour une phrase, et relève deux mineurs.
T3 n'étant pas en ligne, l'amendement `2026-11-03-n1-1-chiffres` est repris lui-même (sa nouvelle
empreinte, dans « La garde, en production »), sans en ajouter un. F1.2 et F1.1 ne changent pas.
- **La phrase de G** (N1.1, dernier paragraphe, que T3 avait laissée).
- **Avant** : « **G** se calcule pour que la part exigée, à la participation habituelle, soit
exactement celle du cran : `G = …`, où s est la part exigée comme d'habitude et p̃ la
participation habituelle divisée par W. »
- **Après** : « **G** se calcule pour que la part exigée, au-delà du quorum, soit exactement celle
du cran quand le groupe vote comme d'habitude : `G = …`, où s est cette part du cran (60, 67, 75,
83 ou 90 %) et p̃ la participation habituelle divisée par W. » *(Repris après la relecture de
e7ab82f, ci-dessus : « au-delà du quorum de l'article », « à la participation habituelle ».)*
- **Pourquoi** : fausse quand la participation habituelle est sous le quorum, où la part exigée
se calcule sur T' = Q. Sur une toile de 3 000 membres dont la médiane est de 40 votants (dans les
bornes), au cran 3, quorum 50 : la courbe donne 75 % à 40 votants, mais la part exigée est
74,23 % de 50, soit 38 « pour » des 40 votants, 95 %. G ne dépend pas du quorum : la courbe passe
toujours par s à la participation habituelle, c'est le quorum qui la coupe en dessous. La phrase
nouvelle ne dit s qu'au-delà du quorum, comme l'introduction de la liste des crans, et s y est la
part du cran, celle de la liste, plus « la part exigée comme d'habitude » (qui, sous le quorum,
n'est pas s). C'est le défaut proposé par l'intégrateur, mot pour mot. Les cinq nombres entre
parenthèses sont gardés : sans eux, « cette part » se lirait aussi comme la « Part exigée » de la
formule au-dessus, qui change avec T' ; ce sont des paramètres (s de chaque cran), que le test des
nombres vérifie. Prouvé par
`g_gives_the_share_of_the_level_beyond_the_quorum_when_the_group_votes_as_usual`, sur la grille de
`the_share_of_a_level_as_usual_is_asked_beyond_the_quorum` (la même fonction, `as_usual_grid` ;
renommés par T3c : `g_gives_the_share_of_the_level_at_the_usual_turnout_beyond_the_article_s_quorum`,
`the_share_of_a_level_is_asked_at_the_usual_turnout_beyond_the_article_s_quorum`, `grid`) :
G tel que le texte l'écrit est celui du moteur ; la courbe passe par s à la participation
habituelle, à tout quorum ; la part exigée du groupe qui vote comme d'habitude est s au-delà du
quorum (970 cas), et plus basse que s, jugée sur le quorum, en dessous (700 cas), là où la phrase
de T3 disait s. Vu rouge sur le texte de T3.
- en, avant : « **G** is computed so that the share asked, at the usual turnout, is exactly that of
the level: `G = …`, where s is the share asked as usual and p̃ the usual turnout divided by W. » ;
après : « **G** is computed so that the share asked, beyond the quorum, is exactly that of the
level when the group votes as usual: `G = …`, where s is that share of the level (60, 67, 75, 83 or
90%) and p̃ the usual turnout divided by W. »
- es, avant : « **G** se calcula para que la proporción exigida, con la participación habitual, sea
exactamente la del nivel: `G = …`, donde s es la proporción exigida como de costumbre y p̃ la
participación habitual dividida por W. » ; après : « **G** se calcula para que la proporción
exigida, más allá del quórum, sea exactamente la del nivel cuando el grupo vota como de costumbre:
`G = …`, donde s es esa proporción del nivel (60, 67, 75, 83 o 90 %) y p̃ la participación
habitual dividida por W. »
- **La phrase du quorum, en français** (N1.1, premier paragraphe).
- **Avant** : « …, et il faut autant de voix pour que si le quorum avait voté. »
- **Après** : « …, et il faut autant de « pour » que si le quorum avait voté. »
- **Pourquoi** : « de voix pour que » se lit d'abord « pour que », la conjonction. Le sens ne change
pas, et le même test le tient (`under_the_quorum_it_takes_as_many_for_as_if_the_quorum_had_voted`).
en et es restent : « as many votes in favour as », « tantos votos a favor como » sont sans
ambiguïté. La raison de l'amendement, qui part dans le commit du dépôt des textes, dit de même
« autant de « pour » », et nomme G.
- **Le test des nombres et « 100 votants »** : le texte voté ne change pas. Le test calculait la
référence comme p0 × W avant les bornes, c'est-à-dire 2 × 50 quel que soit W : sa vérification
« les mêmes chiffres sur toute toile » ne pouvait pas échouer pour 100. 100 y est maintenant ce
qu'il est, un paramètre (deux fois le quorum de référence), sans prétendre qu'il vaut sur toute
toile ; un test à part dit où il vaut (`the_reference_turnout_is_a_parameter_the_bounds_bring_back`) :
la participation de référence est de 100 votants sur une toile de 200 à 10 000 membres, et là
seulement ; en deçà, les bornes la ramènent à 50 % de W, au-delà à 1 %, comme N1.1 le dit dans le
même paragraphe, après. Ce test tombe quand on lui fait dire « de 100 à 10 000 » (W 100).
**Chaque phrase relue, encore**, en fr, en et es, en cherchant « comme d'habitude », « à la
participation habituelle » et « la part du cran » sans « au-delà du quorum » :
- **F1.1** : « Le seuil est le nombre de voix pour […] » (une définition) ; « Sous le quorum Q […]
comme si Q personnes avaient voté » ; « Au-delà, il faut la part de « pour » que demande le cran
[…] la plus haute au quorum […] jusqu'à la majorité M quand tout le monde vote » (la part du cran,
sous « Au-delà ») ; les deux formules ; « Une version passe […] arrondi à l'entier au-dessus » ; T,
Q et T', W, B, M ; G, « plus la part demandée monte quand peu de gens votent » (vrai à tout T' sous
W, donc au quorum aussi) ; « Leurs valeurs sont dans […] ». Aucune n'est de la famille cherchée.
- **F1.2** : l'introduction ; les trois points du vote permanent ; W, T, Q, B ; « G n'est pas fixé à
la main : il se déduit de la participation habituelle du groupe » (dit d'où vient G, rien de la
part) ; « au-delà du quorum, le groupe demande 75 % de « pour » quand il vote comme d'habitude »
(« au-delà du quorum », T3) ; « Tout nouvel article commence à ce cran » ; « Au départ […] ». Juste.
- **N1.1** : « le groupe demande une part de « pour » parmi les votants » (une part, pas celle du
cran ; les votants qui manquent y comptent, comme la phrase suivante le dit) ; la phrase du quorum
(ci-dessus) ; « La part dépend du cran et du nombre de votants, comparé à la participation
habituelle […] : au-delà du quorum, plus il y a de votants, plus elle baisse » (la courbe dépend de
p̃ à tout quorum ; le nombre de votants est T', que la formule définit juste après) ; la formule et
T' ; l'introduction de la liste, « la part exigée au-delà du quorum, quand le groupe vote comme
d'habitude, puis quand tout le monde vote » (T3) ; les cinq crans, « 60 % comme d'habitude » […]
(les colonnes que l'introduction définit, au-delà du quorum ; non répété à chaque ligne) ; la
participation habituelle, ses 5 propositions et ses 100 votants (un paramètre, ramené par les
bornes que la phrase d'après donne) ; « Elle ne dépend pas du quorum d'un article » ; les bornes et
la mesure ; **la phrase de G : la seule de la famille qui restait fausse**, reprise.
- Hors des trois textes, vu en cherchant et laissé (hors de ce lot) : la phrase de F1.1 « le nombre
de voix pour qu'il faut » a la même lecture « pour qu' » que celle du point 3, mais F1.1 n'a pas
d'amendement de T3 et ce lot n'en ajoute pas ; dans l'interface, `settings.reading` dit encore « À
chaque cran, le groupe demande sa part de « pour » quand il vote comme d'habitude ; au-delà du
quorum, […] » (fr, en, es), la même imprécision que la phrase de G, pour sa première moitié.
### N1.1 — Niveaux d'inertie
- **Le quorum** (premier paragraphe).
- **Avant** : « Chaque cran a aussi son quorum, qui n'est pas un nombre minimal de votants : sous
le quorum, les votants qui manquent comptent comme « non ». »
- **Après** : « Chaque cran a aussi son quorum : sous le quorum, les votants qui manquent comptent
comme « non », et il faut autant de « pour » que si le quorum avait voté. » *(T3 écrivait
« autant de voix pour que » ; repris après la relecture de 2ce2028, ci-dessus. Puis, après celle de
e7ab82f : « sous le quorum de l'article », « que si ce quorum avait voté ».)*
- **Pourquoi** : « pas un nombre minimal de votants » est faux pour un quorum d'auteur bas. Au
quorum 2, la part du quorum dépasse 50 % : il faut 2 « pour », une seule voix ne passe jamais, et
le quorum est alors un minimum de votants, à tout cran et sur toute toile (de même au quorum 1 du
groupe d'essai). La phrase nouvelle est vraie pour tout quorum : avec moins de votants que le
quorum, les « pour » qui passent sans « contre » sont exactement le seuil du quorum
(`yes_needed(0)` égale le seuil à T = Q), et un décompte passe dès que ses « pour » l'atteignent.
Prouvé sur une grille par `under_the_quorum_it_takes_as_many_for_as_if_the_quorum_had_voted` :
W de 100 à 10 000 000, chaque quorum de 2 à W jusqu'à 10 000 membres (des quorums choisis
au-delà), les cinq crans, quatre participations dans les bornes ; le groupe d'essai de 1 à
40 membres, chaque quorum de 1 à W ; plus de 500 000 cas. C'est la phrase proposée par l'intégrateur dans l'ordre du lot, mot pour mot.
- en : « Each level also has its quorum: below the quorum, the voters who are missing count as
votes against, and it takes as many votes in favour as if the quorum had voted. » ; es : « Cada
nivel tiene además su quórum: por debajo del quórum, los votantes que faltan cuentan como «no»,
y hacen falta tantos votos a favor como si hubiera votado el quórum. »
- **La liste des crans** (son introduction).
- **Avant** : « **Les cinq crans** : le quorum dans Monnaie libre, la part exigée quand le groupe
vote comme d'habitude, puis quand tout le monde vote, et ce qui est à ce cran au départ. »
- **Après** : « **Les cinq crans** : le quorum dans Monnaie libre, la part exigée au-delà du
quorum, quand le groupe vote comme d'habitude, puis quand tout le monde vote, et ce qui est à ce
cran au départ. » *(Repris après la relecture de e7ab82f, ci-dessus : « au-delà du quorum de
l'article, à la participation habituelle ».)*
- **Pourquoi** : « 75 % comme d'habitude » n'est vrai que si la participation habituelle atteint
le quorum. En dessous, le groupe qui vote comme d'habitude est jugé sur le quorum : sur une toile
de 3 000 membres dont la médiane est de 40 votants (dans les bornes : 1 %, c'est 30), au cran 3,
quorum 50, il faut 38 « pour » de ces 40 votants, 95 %, pas 75 %. Cela arrive dès que la toile
passe sous 5 000 membres (1 % sous 50) avec une médiane sous 50, ou quand l'auteur d'un article
fixe un quorum au-dessus de la participation habituelle. Prouvé par
`the_share_of_a_level_as_usual_is_asked_beyond_the_quorum` (renommé par T3c) : la part du cran exactement quand la
participation habituelle atteint le quorum, une part plus basse, sur plus de votants, sinon ; M
quand tout le monde vote, à tout quorum.
- en : « the share asked beyond the quorum, when the group votes as usual, then when everyone
votes » ; es : « la proporción exigida más allá del quórum, cuando el grupo vota como de
costumbre, luego cuando vota todo el mundo ».
- **L'exemple** (dernier paragraphe) : retiré entier, dans les trois langues (point 3).
### F1.2 — Paramètres par défaut
- **Avant** : « Le cran par défaut est le 3 (moyenne) : M = 55 %, un quorum de 50 dans Monnaie
libre, et le groupe demande 75 % de « pour » quand il vote comme d'habitude. »
- **Après** : « Le cran par défaut est le 3 (moyenne) : M = 55 %, un quorum de 50 dans Monnaie
libre, et, au-delà du quorum, le groupe demande 75 % de « pour » quand il vote comme d'habitude. »
*(Repris après la relecture de e7ab82f, ci-dessus : « à sa participation habituelle ».)*
- **Pourquoi** : la raison de la liste des crans de N1.1 ; le cas de 3 000 membres est celui-ci
(cran 3, quorum 50). en : « and, beyond the quorum, the group asks for 75% of votes in favour
when it votes as usual » ; es : « y, más allá del quórum, el grupo pide un 75 % de votos a favor
cuando vota como de costumbre ».
### F1.1 — relu, laissé
Aucun chiffre daté, aucune phrase fausse : pas d'amendement. « B : la base ; à la puissance W, elle
est si petite qu'elle ne compte pas » est vrai sur toute toile de 100 à 10 000 000 membres : le
seuil du moteur y est celui sans B, même quand la part tombe juste sur un entier (`threshold::settle`,
`clamp_ceil` : M × W quand tout le monde vote, s × la participation habituelle, 60 · 67 · 75 · 83 ·
90 « pour » à 100 votants), prouvé par `b_to_the_power_w_never_counts_in_the_web_of_trust`. Ce
n'est pas vrai d'un très petit groupe : dans le groupe d'essai, où W est le nombre de ses membres,
B^W compte (deux membres qui votent : deux « pour », jamais un seul). F1.1 dit que W est la toile
de confiance, et les textes ne décrivent pas le groupe d'essai (point 4) : laissé (point 10).
### La garde, en production
Dans les deux groupes, F1.2 et N1.1 sont à leur révision 4 (M5, puis M6b, puis M6c), F1.1 à sa
révision 3. Les amendements `2026-11-03-f1-2-chiffres` et `2026-11-03-n1-1-chiffres` suivent ceux de
T2 (`2026-11-03-f1-2-phrases`, `-n1-1-phrases`), qui sont **dépassés** : ils ne décident plus rien,
leurs décisions du 03/11 restent. La garde de révision admet la révision écrite par les amendements
suivis, dans leur ordre, le dernier étant celui de T2, et eux seuls : en production, M5, M6b et M6c
(révision 4) ; sur une base née le 02/11 avec les textes de M5, M6b et M6c (révision 3) ; née avec
ceux de M6b, M6c seul (révision 2) ; née avec ceux de M6c, la révision 1 ; le texte étant celui que
M6c a posé (empreinte). Le reste de la garde ne change pas : origine du seed, jamais entré en
vigueur ni confirmé ; aucune trace de vote (vote du serveur, prouvé ou simulé ; ligne de bulletin en
attente ou prouvée, quel qu'en soit le sort) ; aucune coquille, traduction de membre ni objection.
| Article | Empreinte d'avant : le texte de T2, en ligne | Empreinte d'après : le texte de T3 |
|---|---|---|
| F1.2 | `96caf353b33805f2894593d72c5b70fce2e751039cd7f4651d8842c986729a14` | `0c3b800b0c72b1edd4b884c03c6c5479c17609dcf82a95b593d408821e28bb4e` |
| N1.1 | `7fbedcb8750c208f8790c4f87dc21d8bd1096a27a1a0044af6b9b8f2057f2aa8` | `8107c5fc746121f18c8a440e86e23310c5a59ae8e92f5a07f6b098419980263c` |
Les empreintes d'après sont celles des textes repris après la relecture de `e7ab82f` (lot T3c). Les
précédentes n'ont jamais été en ligne et ne servent plus : F1.2,
`ddce5aa5fcd13dfc3e374c37509a1bb8cfafddefb6e6add5a06b130b43216d62` (T3 et T3b) ; N1.1,
`7f62fd42617c6e63b1783d5a4d472ed733aa074222240faf834e6b31f1c9c166` (T3b) et
`4289e3579ee747f6023162339ed60601b810d33462617b42a9f8b5b3735c3238` (`2ce2028`).
Appliqué, dans une transaction, par document : le texte (fr) remplacé, **révision 4 → 5** pour F1.2
et N1.1 ; une ligne « texte de départ remplacé » dans l'historique, sans auteur (la révision 4, le
texte de T2, reste lisible, avec son diff) ; en et es remplacés ; la décision dans
`seed_amendments`. **La file de publication de Monnaie libre** reçoit deux lignes de plus
(« proposition de départ réécrite : F1.2, la part du cran par défaut au-delà du quorum, à la
participation habituelle » et « … : N1.1, sans chiffre daté ; sous le quorum de l'article, autant de
« pour » que si ce quorum avait voté ; au-delà, la part du cran à la participation habituelle ») ; elles
attendent, comme les autres, le premier texte en vigueur (ADR 0011) puis des votes prouvés (ADR
0012) : rien n'est publié tant qu'aucun article n'est en vigueur. Le groupe d'essai ne publie
jamais. Refusé, le texte de T2 reste, avec sa raison (`votes`, `ballots`, `corrected`,
`translation_edited`, `signalled`, `revised`, `text_differs`…), consignée une fois pour toutes.
Testé (`crates/ld-server/tests/seed_quorum_texts.rs`) sur une base faite comme la production après
M6c — née avec les textes du 21/10, démarrée par le seed de M5, puis de M6, de M6b et de M6c (les
textes de T2 gardés dans `tests/fixtures/seed-quorum-t2.json`) : appliqué une fois dans les deux
groupes, quatre révisions et deux lignes de file de plus, F1.1 et tout le reste intacts ; au second
démarrage, rien n'est rejoué. Refusé avec sa raison là où un vote simulé est compté (`votes`), là où
un bulletin attend (`ballots`), là où un vote direct tient dans le groupe d'essai (`votes`) ; le
refus tient même une fois le vote parti. Appliqué aussi sur une base née le 02/11 avec les textes de
M5, et sur une base née avec ceux de T2. Les deux limites de T2 restent (le commentaire de
`seed_amend.rs`) : un vote direct retiré dans le groupe d'essai, ou un vote simulé que l'acte
« supprime » aurait effacé avant la mise en ligne, ne laissent pas de trace.
En production d'après l'ordre T3 : 0 vote, 0 bulletin (à revoir à la répétition).
## Lot T2 : trois phrases reprises (après la relecture de M6b)
@@ -79,6 +494,8 @@ anciens mots ont disparu des trois langues (`the_three_phrases_of_the_review_of_
12, 39 sur 50, 43 sur 50, 46 sur 50**, du cran 1 au cran 5 (le moteur, dans
`the_three_phrases_of_the_review_of_m6b_are_written_true`). « Au-delà du quorum » est ajouté à
la troisième phrase : sous le quorum, la part ne baisse pas, elle reste celle du quorum.
- *Reprise par le lot T3* : « qui n'est pas un nombre minimal de votants » est vrai aux quorums des
crans, faux pour un quorum d'auteur bas (au quorum 2, il faut 2 « pour »).
### L'interface, dans le même sens
@@ -147,10 +564,10 @@ En production aujourd'hui : 0 vote, 0 bulletin, une seule identité (dit par orc
le départ d'après l'ADR 0011 : aucun article en vigueur, Raison d'être, Unicité du compte et
Réciprocité en Propositions seed au cran 2, le titre du document au cran 4.
- **Les titres** sont gardés tous les trois : ils restent vrais.
- **Les nombres.** Chaque nombre de ces textes, dans les trois langues, est calculé par le moteur ou
lu dans le seed par un test (`crates/ld-server/tests/seed_quorum_texts.rs`,
- **Les nombres.** Chaque nombre de ces textes, dans les trois langues, est un paramètre lu dans le
seed ou une constante du moteur, vérifiés par un test (`crates/ld-server/tests/seed_quorum_texts.rs`,
`every_number_of_the_quorum_texts_is_the_engine_s`) : un chiffre que rien ne justifie fait échouer
le test. Les trois formules écrites dans les textes sont évaluées telles quelles et comparées au
le test ; depuis le lot T3, aucun ne dépend de W ni d'une participation. Les trois formules écrites dans les textes sont évaluées telles quelles et comparées au
moteur sur une grille de cas (`the_formulas_of_the_texts_are_those_the_engine_computes`).
- **La forme**, vérifiée par le test `the_quorum_texts_follow_the_rules_of_form` et par `render()`
(`web/src/lib/markdown.ts`) : sous-ensemble de Markdown, ni tableau ni intertitre ; une ligne vide
@@ -158,7 +575,7 @@ En production aujourd'hui : 0 vote, 0 bulletin, une seule identité (dit par orc
WoT », « Paramètres par défaut », « Niveaux d'inertie »), jamais par le code ; apostrophes droites ;
« » espacés en français, “ ” en anglais britannique (*favour*), «» serrés en espagnol ; formules en
code, avec × et −, jamais d'astérisque.
- **Longueur** (signes, après le lot T2 ; avant : fr 1081 · 2055 · 2372, en 1058 · 1977 · 2246, es 1083 · 2035 · 2454) : fr : F1.1 1122 · F1.2 2035 · N1.1 2449 ; en : F1.1 1093 · F1.2 1950 · N1.1 2315 ; es : F1.1 1126 · F1.2 2020 · N1.1 2526. Limite d'une proposition : 4 000 (`crates/ld-server/src/proposals.rs:32`) ;
- **Longueur** (signes, après la relecture de `e7ab82f` ; après celle de `2ce2028` : fr F1.2 2055 · N1.1 2112, en 1970 · 1987, es 2042 · 2163 ; après le lot T3 : N1.1 fr 2075, en 1937, es 2125 ; après le lot T2 : fr 1122 · 2035 · 2449, en 1093 · 1950 · 2315, es 1126 · 2020 · 2526 ; avant : fr 1081 · 2055 · 2372, en 1058 · 1977 · 2246, es 1083 · 2035 · 2454) : fr : F1.1 1122 · F1.2 2054 · N1.1 2226 ; en : F1.1 1093 · F1.2 1968 · N1.1 2079 ; es : F1.1 1126 · F1.2 2042 · N1.1 2264. Limite d'une proposition : 4 000 (`crates/ld-server/src/proposals.rs:32`) ;
au-delà de 700, l'assistant dit « texte long » (`crates/ld-engine/src/assist.rs:25`), comme pour les
textes actuels de F1.2 et N1.1.
- **Le ton** est celui de F1.2, N1 et O1 tels que M5 les a posés : le groupe, la personne, jamais le
@@ -308,7 +725,7 @@ Les valeurs des lettres de la formule (voir « Formule du seuil WoT ») et la fa
**Par défaut**
- Le cran par défaut est le 3 (moyenne) : M = 55 %, un quorum de 50 dans Monnaie libre, et le groupe demande 75 % de « pour » quand il vote comme d'habitude. Tout nouvel article commence à ce cran.
- Le cran par défaut est le 3 (moyenne) : M = 55 %, un quorum de 50 dans Monnaie libre, et, au-delà du quorum, le groupe demande 75 % de « pour » à sa participation habituelle. Tout nouvel article commence à ce cran.
- Au départ, aucun article n'est en vigueur. Raison d'être, Unicité du compte et Réciprocité sont des Propositions seed, mises en avant pour lancer le vote, au cran 2 (basse). Le titre du document est au cran 4 (haute), l'ordre des articles de chaque section au cran 2, tous les autres articles au cran 3.
```
@@ -335,7 +752,7 @@ The values of the letters of the formula (see “WoT threshold formula”) and h
**By default**
- The default level is 3 (medium): M = 55%, a quorum of 50 in Monnaie libre, and the group asks for 75% of votes in favour when it votes as usual. Every new article starts at this level.
- The default level is 3 (medium): M = 55%, a quorum of 50 in Monnaie libre, and, beyond the quorum, the group asks for 75% of votes in favour at its usual turnout. Every new article starts at this level.
- At the start, no article is in force. Purpose, Uniqueness of the account and Reciprocity are seed proposals, put forward to start the vote, at level 2 (low). The title of the document is at level 4 (high), the order of the articles of each section at level 2, all other articles at level 3.
```
@@ -362,7 +779,7 @@ Los valores de las letras de la fórmula (ver «Fórmula del umbral WoT») y có
**Por defecto**
- El nivel por defecto es el 3 (media): M = 55 %, un quórum de 50 en Monnaie libre, y el grupo pide un 75 % de votos a favor cuando vota como de costumbre. Todo artículo nuevo empieza en este nivel.
- El nivel por defecto es el 3 (media): M = 55 %, un quórum de 50 en Monnaie libre, y, más allá del quórum, el grupo pide un 75 % de votos a favor con su participación habitual. Todo artículo nuevo empieza en este nivel.
- Al inicio, ningún artículo está en vigor. Razón de ser, Unicidad de la cuenta y Reciprocidad son Propuestas seed, puestas en primer plano para lanzar la votación, en el nivel 2 (baja). El título del documento está en el nivel 4 (alta), el orden de los artículos de cada sección en el nivel 2, todos los demás artículos en el nivel 3.
```
@@ -372,30 +789,28 @@ Los valores de las letras de la fórmula (ver «Fórmula del umbral WoT») y có
**Ce qui est faux** : le quorum remplace C ; la part se calcule sur T', les votants ou le quorum s'il en manque ; au cran 2 sont les trois Propositions seed et l'ordre de chaque section, au cran 4 le titre seul ; la référence est deux fois le quorum de référence du document (50 dans Monnaie libre), jamais le quorum d'un article ; avec le quorum, l'exemple donne 72, 81, 90, 100 ou 108 voix pour ; et dans la formule de G, p̃ est une part de l'électorat, pas un nombre de votants.
**Titre** gardé : il reste vrai. Chaque cran dit maintenant son quorum ; l'exemple dit aussi deux cas sous le quorum.
**Titre** gardé : il reste vrai. Chaque cran dit maintenant son quorum ; l'exemple disait aussi deux cas sous le quorum. *(Retiré par le lot T3 : aucun chiffre daté dans un texte voté.)*
### N1.1 · Français (fait foi)
Titre : **Niveaux d'inertie**
```markdown
À chaque cran, le groupe demande une part de « pour » parmi les votants (voir « Formule du seuil WoT »). Chaque cran a aussi son quorum, qui n'est pas un nombre minimal de votants : sous le quorum, les votants qui manquent comptent comme « non ». La part dépend du cran et du nombre de votants, comparé à la participation habituelle du groupe : au-delà du quorum, plus il y a de votants, plus elle baisse, jusqu'à la majorité M quand tout le monde vote.
À chaque cran, le groupe demande une part de « pour » parmi les votants (voir « Formule du seuil WoT »). Chaque cran a aussi son quorum : sous le quorum de l'article, les votants qui manquent comptent comme « non », et il faut autant de « pour » que si ce quorum avait voté. La part exigée dépend du cran et du nombre de votants, comparé à la participation habituelle du groupe : au-delà de ce quorum, plus il y a de votants, plus elle baisse, jusqu'à la majorité M quand tout le monde vote.
`Part exigée = M + (1 − M) × (1 − (T'/W)^G)`, où T' est le nombre de votants, ou le quorum s'il en manque.
`Part exigée = M + (1 − M) × (1 − (T'/W)^G)`, où T' est le nombre de votants, ou le quorum de l'article s'il en manque.
**Les cinq crans** : le quorum dans Monnaie libre, la part exigée quand le groupe vote comme d'habitude, puis quand tout le monde vote, et ce qui est à ce cran au départ.
**Les cinq crans** : le quorum dans Monnaie libre, la part exigée au-delà du quorum de l'article, à la participation habituelle, puis quand tout le monde vote, et ce qui est à ce cran au départ.
- **Cran 1 · très basse** : quorum 12 ; 60 % comme d'habitude, 50 % quand tout le monde vote. Aucun article au départ.
- **Cran 2 · basse** : quorum 12 ; 67 % comme d'habitude, 50 % quand tout le monde vote. Raison d'être, Unicité du compte, Réciprocité, et l'ordre des articles de chaque section.
- **Cran 3 · moyenne** : quorum 50 ; 75 % comme d'habitude, 55 % quand tout le monde vote. Le cran par défaut : tous les autres articles, et chaque nouvel article.
- **Cran 4 · haute** : quorum 50 ; 83 % comme d'habitude, 60 % quand tout le monde vote. Le titre du document.
- **Cran 5 · très haute** : quorum 50 ; 90 % comme d'habitude, 66 % quand tout le monde vote. Aucun article au départ.
- **Cran 1 · très basse** : quorum 12 ; 60 % à la participation habituelle, 50 % quand tout le monde vote. Aucun article au départ.
- **Cran 2 · basse** : quorum 12 ; 67 % à la participation habituelle, 50 % quand tout le monde vote. Raison d'être, Unicité du compte, Réciprocité, et l'ordre des articles de chaque section.
- **Cran 3 · moyenne** : quorum 50 ; 75 % à la participation habituelle, 55 % quand tout le monde vote. Le cran par défaut : tous les autres articles, et chaque nouvel article.
- **Cran 4 · haute** : quorum 50 ; 83 % à la participation habituelle, 60 % quand tout le monde vote. Le titre du document.
- **Cran 5 · très haute** : quorum 50 ; 90 % à la participation habituelle, 66 % quand tout le monde vote. Aucun article au départ.
**La participation habituelle** est la médiane du nombre de votants des propositions du groupe votées depuis un an. Tant que le groupe n'a pas voté sur 5 propositions, elle vaut deux fois le quorum de référence du document : 100 votants dans Monnaie libre. Elle ne dépend pas du quorum d'un article. Elle reste entre 1 % et 50 % de l'électorat, et se mesure une fois par jour.
**La participation habituelle** est la médiane du nombre de votants des propositions du groupe votées depuis un an. Tant qu'elle repose sur moins de 5 propositions, elle vaut deux fois le quorum de référence du document : 100 votants dans Monnaie libre. Elle ne dépend pas du quorum d'un article. Elle est ramenée entre 1 % et 50 % de l'électorat, et se mesure une fois par jour.
**G** se calcule pour que la part exigée, à la participation habituelle, soit exactement celle du cran : `G = ln(1 − (s − M)/(1 − M)) / ln(p̃)`, où s est la part exigée comme d'habitude et p̃ la participation habituelle divisée par W.
Exemple : avec 7 224 membres et une participation habituelle de 120 votants, quand 120 personnes votent, il faut 72, 81, 90, 100 ou 108 voix pour, du cran 1 au cran 5 ; au cran 3, 75 % des 120 votants, soit 90. Sous le quorum, les absents comptent comme « non » : au cran 2 (quorum 12), 9 voix pour passent avec 3 « contre » au plus ; au cran 3 (quorum 50), il faut 39 voix pour, avec 11 « contre » au plus.
**G** se calcule pour que la part exigée, au-delà du quorum de l'article, soit exactement celle du cran à la participation habituelle : `G = ln(1 − (s − M)/(1 − M)) / ln(p̃)`, où s est cette part du cran (60, 67, 75, 83 ou 90 %) et p̃ la participation habituelle divisée par W.
```
### N1.1 · English
@@ -403,23 +818,21 @@ Exemple : avec 7 224 membres et une participation habituelle de 120 votants, qua
Titre : **Inertia levels**
```markdown
At each level, the group asks for a share of votes in favour among the voters (see “WoT threshold formula”). Each level also has its quorum, which is not a minimum number of voters: below the quorum, the voters who are missing count as votes against. The share depends on the level and on the number of voters, compared with the group's usual turnout: beyond the quorum, the more voters, the lower it gets, down to the majority M when everyone votes.
At each level, the group asks for a share of votes in favour among the voters (see “WoT threshold formula”). Each level also has its quorum: below the article's quorum, the voters who are missing count as votes against, and it takes as many votes in favour as if that quorum had voted. The share asked depends on the level and on the number of voters, compared with the group's usual turnout: beyond that quorum, the more voters, the lower it gets, down to the majority M when everyone votes.
`Share asked = M + (1 − M) × (1 − (T'/W)^G)`, where T' is the number of voters, or the quorum if some are missing.
`Share asked = M + (1 − M) × (1 − (T'/W)^G)`, where T' is the number of voters, or the article's quorum if some are missing.
**The five levels**: the quorum in Monnaie libre, the share asked when the group votes as usual, then when everyone votes, and what is at that level at the start.
**The five levels**: the quorum in Monnaie libre, the share asked beyond the article's quorum, at the usual turnout, then when everyone votes, and what is at that level at the start.
- **Level 1 · very low**: quorum 12; 60% as usual, 50% when everyone votes. No article at the start.
- **Level 2 · low**: quorum 12; 67% as usual, 50% when everyone votes. Purpose, Uniqueness of the account, Reciprocity, and the order of the articles of each section.
- **Level 3 · medium**: quorum 50; 75% as usual, 55% when everyone votes. The default level: all other articles, and every new article.
- **Level 4 · high**: quorum 50; 83% as usual, 60% when everyone votes. The title of the document.
- **Level 5 · very high**: quorum 50; 90% as usual, 66% when everyone votes. No article at the start.
- **Level 1 · very low**: quorum 12; 60% at the usual turnout, 50% when everyone votes. No article at the start.
- **Level 2 · low**: quorum 12; 67% at the usual turnout, 50% when everyone votes. Purpose, Uniqueness of the account, Reciprocity, and the order of the articles of each section.
- **Level 3 · medium**: quorum 50; 75% at the usual turnout, 55% when everyone votes. The default level: all other articles, and every new article.
- **Level 4 · high**: quorum 50; 83% at the usual turnout, 60% when everyone votes. The title of the document.
- **Level 5 · very high**: quorum 50; 90% at the usual turnout, 66% when everyone votes. No article at the start.
**The usual turnout** is the median number of voters on the group's proposals voted on over the past year. Until the group has voted on 5 proposals, it is twice the document's reference quorum: 100 voters in Monnaie libre. It does not depend on the quorum of an article. It stays between 1% and 50% of the electorate, and is measured once a day.
**The usual turnout** is the median number of voters on the group's proposals voted on over the past year. While it rests on fewer than 5 proposals, it is twice the document's reference quorum: 100 voters in Monnaie libre. It does not depend on the quorum of an article. It is kept between 1% and 50% of the electorate, and is measured once a day.
**G** is computed so that the share asked, at the usual turnout, is exactly that of the level: `G = ln(1 − (s − M)/(1 − M)) / ln(p̃)`, where s is the share asked as usual and p̃ the usual turnout divided by W.
Example: with 7,224 members and a usual turnout of 120 voters, when 120 people vote, it takes 72, 81, 90, 100 or 108 votes in favour, from level 1 to level 5; at level 3, 75% of the 120 voters, i.e. 90. Below the quorum, those missing count as votes against: at level 2 (quorum 12), 9 votes in favour pass with 3 votes against at most; at level 3 (quorum 50), it takes 39 votes in favour, with 11 votes against at most.
**G** is computed so that the share asked, beyond the article's quorum, is exactly that of the level at the usual turnout: `G = ln(1 − (s − M)/(1 − M)) / ln(p̃)`, where s is that share of the level (60, 67, 75, 83 or 90%) and p̃ the usual turnout divided by W.
```
### N1.1 · Español
@@ -427,23 +840,21 @@ Example: with 7,224 members and a usual turnout of 120 voters, when 120 people v
Titre : **Niveles de inercia**
```markdown
En cada nivel, el grupo pide una proporción de votos a favor entre los votantes (ver «Fórmula del umbral WoT»). Cada nivel tiene además su quórum, que no es un número mínimo de votantes: por debajo del quórum, los votantes que faltan cuentan como «no». La proporción depende del nivel y del número de votantes, comparado con la participación habitual del grupo: más allá del quórum, cuantos más votantes, más baja, hasta la mayoría M cuando vota todo el mundo.
En cada nivel, el grupo pide una proporción de votos a favor entre los votantes (ver «Fórmula del umbral WoT»). Cada nivel tiene además su quórum: por debajo del quórum del artículo, los votantes que faltan cuentan como «no», y hacen falta tantos votos a favor como si hubiera votado ese quórum. La proporción exigida depende del nivel y del número de votantes, comparado con la participación habitual del grupo: más allá de ese quórum, cuantos más votantes, más baja, hasta la mayoría M cuando vota todo el mundo.
`Proporción exigida = M + (1 − M) × (1 − (T'/W)^G)`, donde T' es el número de votantes, o el quórum si faltan.
`Proporción exigida = M + (1 − M) × (1 − (T'/W)^G)`, donde T' es el número de votantes, o el quórum del artículo si faltan.
**Los cinco niveles**: el quórum en Monnaie libre, la proporción exigida cuando el grupo vota como de costumbre, luego cuando vota todo el mundo, y lo que está en ese nivel al inicio.
**Los cinco niveles**: el quórum en Monnaie libre, la proporción exigida más allá del quórum del artículo, con la participación habitual, luego cuando vota todo el mundo, y lo que está en ese nivel al inicio.
- **Nivel 1 · muy baja**: quórum 12; 60 % como de costumbre, 50 % cuando vota todo el mundo. Ningún artículo al inicio.
- **Nivel 2 · baja**: quórum 12; 67 % como de costumbre, 50 % cuando vota todo el mundo. Razón de ser, Unicidad de la cuenta, Reciprocidad, y el orden de los artículos de cada sección.
- **Nivel 3 · media**: quórum 50; 75 % como de costumbre, 55 % cuando vota todo el mundo. El nivel por defecto: todos los demás artículos, y todo artículo nuevo.
- **Nivel 4 · alta**: quórum 50; 83 % como de costumbre, 60 % cuando vota todo el mundo. El título del documento.
- **Nivel 5 · muy alta**: quórum 50; 90 % como de costumbre, 66 % cuando vota todo el mundo. Ningún artículo al inicio.
- **Nivel 1 · muy baja**: quórum 12; 60 % con la participación habitual, 50 % cuando vota todo el mundo. Ningún artículo al inicio.
- **Nivel 2 · baja**: quórum 12; 67 % con la participación habitual, 50 % cuando vota todo el mundo. Razón de ser, Unicidad de la cuenta, Reciprocidad, y el orden de los artículos de cada sección.
- **Nivel 3 · media**: quórum 50; 75 % con la participación habitual, 55 % cuando vota todo el mundo. El nivel por defecto: todos los demás artículos, y todo artículo nuevo.
- **Nivel 4 · alta**: quórum 50; 83 % con la participación habitual, 60 % cuando vota todo el mundo. El título del documento.
- **Nivel 5 · muy alta**: quórum 50; 90 % con la participación habitual, 66 % cuando vota todo el mundo. Ningún artículo al inicio.
**La participación habitual** es la mediana del número de votantes de las propuestas del grupo votadas en el último año. Hasta que el grupo haya votado 5 propuestas, vale dos veces el quórum de referencia del documento: 100 votantes en Monnaie libre. No depende del quórum de un artículo. Se mantiene entre el 1 % y el 50 % del electorado, y se mide una vez al día.
**La participación habitual** es la mediana del número de votantes de las propuestas del grupo votadas en el último año. Mientras se base en menos de 5 propuestas, vale dos veces el quórum de referencia del documento: 100 votantes en Monnaie libre. No depende del quórum de un artículo. Se acota entre el 1 % y el 50 % del electorado, y se mide una vez al día.
**G** se calcula para que la proporción exigida, con la participación habitual, sea exactamente la del nivel: `G = ln(1 − (s − M)/(1 − M)) / ln(p̃)`, donde s es la proporción exigida como de costumbre y p̃ la participación habitual dividida por W.
Ejemplo: con 7224 miembros y una participación habitual de 120 votantes, cuando votan 120 personas, hacen falta 72, 81, 90, 100 o 108 votos a favor, del nivel 1 al nivel 5; en el nivel 3, el 75 % de los 120 votantes, es decir 90. Por debajo del quórum, los que faltan cuentan como «no»: en el nivel 2 (quórum 12), 9 votos a favor pasan con 3 en contra como mucho; en el nivel 3 (quórum 50), hacen falta 39 votos a favor, con 11 en contra como mucho.
**G** se calcula para que la proporción exigida, más allá del quórum del artículo, sea exactamente la del nivel con la participación habitual: `G = ln(1 − (s − M)/(1 − M)) / ln(p̃)`, donde s es esa proporción del nivel (60, 67, 75, 83 o 90 %) y p̃ la participación habitual dividida por W.
```
## Les autres articles, cherchés et laissés
@@ -466,15 +877,18 @@ inertie, le cran de départ de Raison d'être, Unicité du compte et Réciprocit
1. **Ton intention de remonter l'inertie** une fois les textes passés : elle n'est pas écrite (ce n'est
pas une règle). Si tu veux que F1.2 l'annonce sans la promettre, une phrase vraie suffit : « Leur
cran se change ensuite par un vote, comme celui de tout article (voir « Réglage de l'inertie »). »
*(Tranché le 03/11 : le défaut reste, rien n'est écrit.)*
2. **« Propositions seed »** dans un texte voté : c'est le mot de l'interface (« Proposition seed »,
« Seed proposal », « Propuesta seed »). Autre choix : « propositions mises en avant ».
*(Tranché le 03/11 : le défaut reste, « Propositions seed ».)*
3. **L'exemple de N1.1** (7 224 membres, 120 votants) reste celui de M5 et des tests (le vote
forgeron de 2024) : une illustration, pas la toile d'aujourd'hui (5 707 membres en production le
02/11). À ce W et à la participation de référence, les deux exemples sous le quorum donnent les
mêmes nombres de « pour » : 9 au cran 2, 39 au cran 3 (`crates/ld-engine/src/inertia.rs`,
`the_control_figures_of_the_quorum`). À retirer si tu ne veux pas de chiffre daté dans un texte voté.
**Tranché le 03/11 : retiré** (« pas de chiffre datés dans un texte voté » ; lot T3).
4. **Le groupe d'essai** (quorum 1 partout) n'est pas nommé : les textes donnent les quorums « dans
Monnaie libre », comme F1.2 donnait C = 50.
Monnaie libre », comme F1.2 donnait C = 50. *(Tranché le 03/11 : le défaut reste.)*
5. **F1.1 a changé de plan** : le sens d'abord, la formule ensuite, les lettres en liste (la liste
d'aujourd'hui ne s'affiche pas comme liste, faute de ligne vide). B y est « la base » (W l'exposant :
« exposant de base » était faux), M n'y est plus `majority_pct / 100`, et « Seuil » est traduit en
@@ -491,9 +905,28 @@ inertie, le cran de départ de Raison d'être, Unicité du compte et Réciprocit
n'est compté sur l'article » (défaut d'orch) se lit mieux mais se trompe pour un vote retiré
sur la chaîne (plus compté, le quorum reste figé). Les trois phrases de l'interface sur le
quorum de l'auteur (« avant le premier vote », « tant que personne n'a voté ») gardent ta
formule : à aligner si tu le veux.
formule : à aligner si tu le veux. *(Tranché le 03/11 : le défaut reste, « garder la trace »
dans F1.2, ta formule dans l'interface.)*
9. **Lot T2, F1.1 et N1.1** : sans chiffre, pour ne pas dater le texte voté ; les chiffres de la
production (64,4 à 91,9 % ; 9 « pour » sur 12) sont ici, calculés par le moteur.
10. **Lot T3, F1.1 et le groupe d'essai** (pour information) : « B […] ne compte pas » est vrai dans
la toile, faux dans un groupe de quelques membres, où B^W demande une voix de plus quand la part
tombe juste sur un entier (deux membres qui votent : deux « pour »). Les textes disent que W est
la toile de confiance et ne décrivent pas le groupe d'essai (point 4) : laissé. Si tu veux qu'ils
le décrivent aussi, F1.1 dirait « dans la toile de confiance », comme F1.2.
11. **Lot T3, l'interface** (hors de ce lot) : `settings.reading` dit encore « le groupe demande sa
part de « pour » quand il vote comme d'habitude », sans « au-delà du quorum » pour cette part ;
même imprécision que la phrase de F1.2 et N1.1 reprise ici (fr, en, es). *(Après T3c : l'interface
dit aussi « comme d'habitude » dans `settings.share.note` et `settings.required.usual` ; les textes
votés disent maintenant « à la participation habituelle ». Non touchée, ordre de T3c.)*
12. **Lot T3c, F1.2, « Un vote permanent »** (pour information, hors du champ de T3c) : « Chacun peut
changer ou retirer son vote » et « Une proposition entre en vigueur dès qu'elle atteint son seuil »
ne disent pas la version retenue par une objection (ADR 0010 : on n'y ajoute jamais un « pour », et
elle n'entre pas en vigueur tant que l'objection tient). Règles sans nombre, laissées : à écrire si
tu le veux, par un autre lot.
13. **Lot T3c, F1.1** (pour information) : « G : plus il est grand, plus la part demandée monte quand peu
de gens votent » n'a pas d'effet sur un article dont l'auteur a fixé le quorum à W (la part y est M
à tout G). Cas limite ; F1.1 n'a pas d'amendement, laissé.
## Les chiffres et leur source
@@ -522,17 +955,23 @@ Chaque nombre est vérifié par `every_number_of_the_quorum_texts_is_the_engine_
| W relu toutes les 6 heures | F1.2 | `wot::REFRESH` (`crates/ld-server/src/wot.rs:13-14`) |
| B = 0,1 | F1.2 | `FormulaParams::DEFAULT_BASE` |
| Cran 3 par défaut : M = 55 %, quorum 50, 75 % | F1.2, N1.1 | `InertiaLevel::DEFAULT`, `majority_pct`, `share_pct` ; le quorum du cran |
| M = 50, 50, 55, 60, 66 % ; s = 60, 67, 75, 83, 90 % | N1.1 | `InertiaLevel::majority_pct`, `share_pct` |
| M = 50, 50, 55, 60, 66 % ; s = 60, 67, 75, 83, 90 % (la liste des crans ; s aussi dans la phrase de G) | N1.1 | `InertiaLevel::majority_pct`, `share_pct` |
| Propositions seed au cran 2 | F1.2, N1.1 | `seed::SEED_PROPOSAL_LEVEL` ; les versions `seedProposal` du seed, leurs titres dans chaque langue |
| Le titre au cran 4, l'ordre de chaque section au cran 2 | F1.2, N1.1 | le seed, `modules.title.inertia`, `modules.order.inertia` |
| Tous les autres articles au cran 3 ; rien aux crans 1 et 5 | F1.2, N1.1 | le seed : chaque `inertia` (toutes égales, vérifié) |
| 5 propositions ; 100 votants (deux fois le quorum de référence) | N1.1 | `Participation::MIN_SAMPLE` ; `Participation::of(W, voteFloor, None, 0).voters(W)`, `voteFloor` = 50 |
| Entre 1 % et 50 % | N1.1 | `Participation::LOWEST`, `HIGHEST` |
| 5 propositions ; 100 votants (deux fois le quorum de référence) | N1.1 | `Participation::MIN_SAMPLE` ; 2 × `voteFloor` (50), un paramètre, écrit avant les bornes : la participation de référence ne vaut 100 votants que sur une toile de 200 à 10 000 membres, les bornes la ramènent ailleurs (`the_reference_turnout_is_a_parameter_the_bounds_bring_back`) ; moins de 5 propositions votées dans l'année, la référence (lot T3c : `the_participation_habituelle_is_the_median_brought_back_within_its_bounds`, `tests/inertia.rs` `the_usual_participation_is_the_median_of_five_voted_proposals`) |
| Ramenée entre 1 % et 50 % | N1.1 | `Participation::LOWEST`, `HIGHEST` ; la valeur bornée est la participation habituelle (lot T3c : `the_participation_habituelle_is_the_median_brought_back_within_its_bounds`) |
| Depuis un an ; une fois par jour | N1.1 | `participation::WINDOW_DAYS` = 365, `EVERY_HOURS` = 24 |
| 72, 81, 90, 100, 108 voix pour à 120 votants | N1.1 | `Scale::required(120, k, Q_k)`, W 7 224, médiane 120 ; déjà `inertia.rs`, `the_values_shown_to_yvv` |
| 75 % des 120 votants, soit 90 | N1.1 | la part du cran 3 × 120, égale au seuil du moteur (vérifié) |
| Cran 2 (quorum 12) : 9 « pour », 3 « contre » au plus | N1.1 | `threshold::yes_needed(0)`, puis `no_needed(9) − 1`, W 7 224, médiane 120 |
| Cran 3 (quorum 50) : 39 « pour », 11 « contre » au plus | N1.1 | idem ; les deux exemples restent sous le quorum (vérifié) |
**Lot T3** : les quatre lignes de l'exemple de N1.1 sont ôtées de ce tableau (72, 81, 90, 100 et
108 voix pour à 120 votants ; 75 % des 120 votants, soit 90 ; au cran 2, 9 « pour » et 3 « contre »
au plus ; au cran 3, 39 et 11) : l'exemple est sorti du texte (point 3), parce que ses chiffres
dépendaient de la toile et d'une participation (7 224 membres, 120 votants). Ils restent des
chiffres de contrôle du moteur (`inertia.rs`, `the_values_shown_to_yvv`,
`the_control_figures_of_the_quorum`), pas des textes. Tous les nombres qui restent sont des
paramètres, qu'aucune toile ni participation ne change ; seul le quorum le plus bas est calculé sur W
par le test, le même sur toute toile de 100 à 10 000 000 membres. « 100 votants » est un paramètre,
pas une participation vraie sur toute toile (lot T3b, après la relecture de `2ce2028`).
Les règles sans chiffre :
@@ -543,6 +982,14 @@ Les règles sans chiffre :
| Une version passe quand ses « pour » atteignent le seuil arrondi au-dessus | F1.1 | `threshold::passes`, `clamp_ceil` |
| La participation habituelle ne dépend pas du quorum d'un article | N1.1 | `inertia::Participation::reference_ratio` (le quorum de référence du document) ; ADR 0013 |
| Au départ, aucun article en vigueur | F1.2 | ADR 0011 ; le seed (aucune version `in_force` hors modules) |
| Sous le quorum de l'article, autant de « pour » que si ce quorum avait voté (lot T3, puis T3b et T3c) | N1.1 | `threshold::judged_voters` ; `yes_needed(0)` égale `wot_threshold(W, Q)` ; `under_the_quorum_it_takes_as_many_for_as_if_the_quorum_had_voted` |
| Dans Monnaie libre, un seul « pour » ne passe jamais (lot T3c, sur la grille) | F1.2 | `threshold::passes` ; `under_the_quorum_it_takes_as_many_for_as_if_the_quorum_had_voted` |
| Au-delà du quorum de l'article, la part exigée baisse à chaque votant de plus, jusqu'à M (lot T3c) | N1.1 | `threshold::required_ratio`, `judged_voters` ; `the_share_asked_falls_beyond_the_article_s_quorum_down_to_m` |
| La part du cran à la participation habituelle, au-delà du quorum de l'article (lot T3, puis T3c) | F1.2, N1.1 | `inertia::gradient`, `Participation::of` ; `the_share_of_a_level_is_asked_at_the_usual_turnout_beyond_the_article_s_quorum` |
| G donne la part du cran au-delà du quorum de l'article, à la participation habituelle (lot T3b, puis T3c) | N1.1 | `inertia::gradient`, `threshold::judged_voters` ; `g_gives_the_share_of_the_level_at_the_usual_turnout_beyond_the_article_s_quorum` |
| La participation habituelle ne dépend pas du quorum d'un article (lot T3c, servie) | N1.1 | `docs.rs` (`Participation::of` sur `vote_floor`) ; `tests/quorum.rs` `in_monnaie_libre_a_quorum_holds_two_voices_and_a_ballot_counts_even_pending` |
| Tout nouvel article commence au cran 3 (lot T3c) | F1.2 | `proposals.rs` (`InertiaLevel::DEFAULT`) ; `tests/quorum.rs` `the_author_of_an_article_sets_its_quorum_before_the_first_vote` |
| B^W ne compte pas dans la toile (W de 100 à 10 000 000) | F1.1, F1.2 | `wot::PLAUSIBLE` ; `b_to_the_power_w_never_counts_in_the_web_of_trust` |
## Les textes dans le seed
+7 -7
View File
@@ -1,5 +1,5 @@
{
"_source": "maquette/frontend/app/data/seeds/duniter-g1.bundle.json (doc engagement-certification, 33 clauses + 2 variantes). Aucun article en vigueur au départ. I1, E1, E2 : Propositions seed (« seedProposal »), ouvertes, mises en avant pour amorcer le vote, sans niveau d'inertie ici : elles démarrent au cran SEED_PROPOSAL_LEVEL (crates/ld-server/src/seed.rs : 2 « basse », choix d'Yvv du 2026-11-02, qui remontera leur inertie par un vote une fois les textes passés ; ADR 0011). Tant qu'aucun article n'est en vigueur, la publication attend le premier texte. Tout le reste : propositions ouvertes à 0 vote (Yvv, 2026-10-21), inertie 3 / 5. I1 « Raison d'être » remplace le Préambule (texte d'Yvv, revue du 2026-10-30). Modules : le titre du document à 4, l'ordre des articles de chaque section à 2, en vigueur sans vote (seed a minima ; revue du 2026-10-30, ADR 0009). F1.2, N1, N1.1, O1 réécrits selon les règles appliquées (Yvv, 2026-11-02). Quorums par cran (« quorums », ADR 0013, Yvv, 2026-11-02 et 03) : 12 · 12 · 50 · 50 · 50 dans Monnaie libre, 1 partout dans le groupe d'essai ; sous le quorum, les votants qui manquent comptent comme « non » ; voteFloor reste le quorum de référence de la participation p0 = 2 × voteFloor / W. Une base existante reçoit ces changements par des amendements gardés (seed_amend, seed_proposal_amend, quorum_amend), jamais en réinstanciant le document. F1.1, F1.2 et N1.1 réécrits pour le quorum par cran (ADR 0013 ; Yvv, 2026-11-02 et 03 ; lot T, textes relus dans docs/chantiers/acte-certification/textes-quorum-seed.md) : sous le quorum, les votants qui manquent comptent comme « non » ; au-delà, la part du cran. Trois phrases reprises après la relecture de M6b (lot T2) : la part du cran, la plus haute au quorum, baisse quand la participation monte (F1.1) ; l'auteur fixe le quorum tant que l'article ne garde la trace d'aucun vote (F1.2) ; le quorum n'est pas un nombre minimal de votants (N1.1).",
"_source": "maquette/frontend/app/data/seeds/duniter-g1.bundle.json (doc engagement-certification, 33 clauses + 2 variantes). Aucun article en vigueur au départ. I1, E1, E2 : Propositions seed (« seedProposal »), ouvertes, mises en avant pour amorcer le vote, sans niveau d'inertie ici : elles démarrent au cran SEED_PROPOSAL_LEVEL (crates/ld-server/src/seed.rs : 2 « basse », choix d'Yvv du 2026-11-02, qui remontera leur inertie par un vote une fois les textes passés ; ADR 0011). Tant qu'aucun article n'est en vigueur, la publication attend le premier texte. Tout le reste : propositions ouvertes à 0 vote (Yvv, 2026-10-21), inertie 3 / 5. I1 « Raison d'être » remplace le Préambule (texte d'Yvv, revue du 2026-10-30). Modules : le titre du document à 4, l'ordre des articles de chaque section à 2, en vigueur sans vote (seed a minima ; revue du 2026-10-30, ADR 0009). F1.2, N1, N1.1, O1 réécrits selon les règles appliquées (Yvv, 2026-11-02). Quorums par cran (« quorums », ADR 0013, Yvv, 2026-11-02 et 03) : 12 · 12 · 50 · 50 · 50 dans Monnaie libre, 1 partout dans le groupe d'essai ; sous le quorum, les votants qui manquent comptent comme « non » ; voteFloor reste le quorum de référence de la participation p0 = 2 × voteFloor / W. Une base existante reçoit ces changements par des amendements gardés (seed_amend, seed_proposal_amend, quorum_amend), jamais en réinstanciant le document. F1.1, F1.2 et N1.1 réécrits pour le quorum par cran (ADR 0013 ; Yvv, 2026-11-02 et 03 ; lot T, textes relus dans docs/chantiers/acte-certification/textes-quorum-seed.md) : sous le quorum, les votants qui manquent comptent comme « non » ; au-delà, la part du cran. Trois phrases reprises après la relecture de M6b (lot T2) : la part du cran, la plus haute au quorum, baisse quand la participation monte (F1.1) ; l'auteur fixe le quorum tant que l'article ne garde la trace d'aucun vote (F1.2) ; le quorum n'est pas un nombre minimal de votants (N1.1). Lot T3 (Yvv, 03/11 : « pas de chiffre datés dans un texte voté ») : l'exemple chiffré de N1.1 retiré (aucun nombre des textes ne dépend de W ni d'une participation) ; N1.1, sous le quorum, il faut autant de « pour » que si le quorum avait voté (vrai pour tout quorum) ; N1.1 et F1.2, la part du cran comme d'habitude au-delà du quorum. Après la relecture de 2ce2028 (lot T3b, même amendement) : N1.1, G se calcule pour que la part exigée, au-delà du quorum, soit celle du cran quand le groupe vote comme d'habitude (vrai pour tout W et tout quorum). Après la relecture de e7ab82f (lot T3c, mêmes amendements) : F1.2 et N1.1 écrivent le terme défini, « à la participation habituelle » (la médiane ramenée entre 1 % et 50 % de W, celle sur laquelle G se calcule), à la place de « comme d'habitude », faux quand la médiane sort de ses bornes ; N1.1, « sous le quorum de l'article », « la part exigée », « Tant qu'elle repose sur moins de 5 propositions », « Elle est ramenée entre 1 % et 50 % » (liste fermée des phrases : docs/chantiers/acte-certification/t3c-liste-fermee.md).",
"slug": "acte-engagement-certification",
"title": {
"fr": "Acte d'engagement Certification",
@@ -694,9 +694,9 @@
"es": "Parámetros por defecto"
},
"body": {
"fr": "Les valeurs des lettres de la formule (voir « Formule du seuil WoT ») et la façon dont le vote se déroule.\n\n**Un vote permanent, sans durée**\n\n- Chaque version se vote à tout moment, sans échéance. Chacun peut changer ou retirer son vote : le dernier fait foi.\n- Une proposition entre en vigueur dès qu'elle atteint son seuil. S'il y a déjà un texte en vigueur, il lui faut en plus une marge (voix pour moins voix exigées) plus large que celle de ce texte. Le texte remplacé redevient une proposition, avec ses votes : il peut revenir.\n- Si plusieurs propositions y parviennent, celle qui a la marge la plus large entre en vigueur.\n\n**Les lettres**\n\n- **W** : le nombre de membres de la toile de confiance Ğ1, relu sur la chaîne toutes les 6 heures.\n- **T** : les votes exprimés sur la version, pour et contre.\n- **Q**, le quorum : sous ce nombre de votants, ceux qui manquent comptent comme « non ». Chaque article prend celui de son cran : 12, 12, 50, 50 et 50 dans Monnaie libre, du cran 1 au cran 5. L'auteur de la première version d'un article, un administrateur pour les textes de départ, peut en fixer un autre tant que l'article ne garde la trace d'aucun vote. Dans Monnaie libre, jamais moins de 2 : une seule voix ne fait jamais passer un texte.\n- **B = 0,1** : dans la toile de confiance, `B^W` est si petit qu'il ne compte pas.\n- **M** et **G** : donnés par le cran d'inertie de l'article (voir « Niveaux d'inertie »). G n'est pas fixé à la main : il se déduit de la participation habituelle du groupe.\n\n**Par défaut**\n\n- Le cran par défaut est le 3 (moyenne) : M = 55 %, un quorum de 50 dans Monnaie libre, et le groupe demande 75 % de « pour » quand il vote comme d'habitude. Tout nouvel article commence à ce cran.\n- Au départ, aucun article n'est en vigueur. Raison d'être, Unicité du compte et Réciprocité sont des Propositions seed, mises en avant pour lancer le vote, au cran 2 (basse). Le titre du document est au cran 4 (haute), l'ordre des articles de chaque section au cran 2, tous les autres articles au cran 3.",
"en": "The values of the letters of the formula (see “WoT threshold formula”) and how the vote runs.\n\n**A permanent vote, with no duration**\n\n- Every version can be voted on at any time, with no deadline. Anyone can change or withdraw their vote: the last one is the one that counts.\n- A proposal comes into force as soon as it reaches its threshold. If a text is already in force, it also needs a wider margin (votes in favour minus votes required) than that text has. The replaced text becomes a proposal again, with its votes: it can come back.\n- If several proposals get there, the one with the widest margin comes into force.\n\n**The letters**\n\n- **W**: the number of members of the Ğ1 web of trust, read again from the chain every 6 hours.\n- **T**: the votes cast on the version, for and against.\n- **Q**, the quorum: below this number of voters, those who are missing count as votes against. Each article takes the one of its level: 12, 12, 50, 50 and 50 in Monnaie libre, from level 1 to level 5. The author of the first version of an article, an administrator for the starting texts, can set another one as long as the article keeps no trace of any vote. In Monnaie libre, never less than 2: a single vote never passes a text.\n- **B = 0.1**: in the web of trust, `B^W` is so small that it does not count.\n- **M** and **G**: given by the article's level of inertia (see “Inertia levels”). G is not set by hand: it follows from the group's usual turnout.\n\n**By default**\n\n- The default level is 3 (medium): M = 55%, a quorum of 50 in Monnaie libre, and the group asks for 75% of votes in favour when it votes as usual. Every new article starts at this level.\n- At the start, no article is in force. Purpose, Uniqueness of the account and Reciprocity are seed proposals, put forward to start the vote, at level 2 (low). The title of the document is at level 4 (high), the order of the articles of each section at level 2, all other articles at level 3.",
"es": "Los valores de las letras de la fórmula (ver «Fórmula del umbral WoT») y cómo se desarrolla la votación.\n\n**Una votación permanente, sin duración**\n\n- Cada versión se vota en cualquier momento, sin plazo. Cada cual puede cambiar o retirar su voto: el último es el que cuenta.\n- Una propuesta entra en vigor en cuanto alcanza su umbral. Si ya hay un texto en vigor, necesita además un margen (votos a favor menos votos exigidos) más amplio que el de ese texto. El texto sustituido vuelve a ser una propuesta, con sus votos: puede volver.\n- Si varias propuestas lo consiguen, entra en vigor la que tiene el margen más amplio.\n\n**Las letras**\n\n- **W**: el número de miembros de la red de confianza Ğ1, leído de nuevo en la cadena cada 6 horas.\n- **T**: los votos emitidos sobre la versión, a favor y en contra.\n- **Q**, el quórum: por debajo de este número de votantes, los que faltan cuentan como «no». Cada artículo toma el de su nivel: 12, 12, 50, 50 y 50 en Monnaie libre, del nivel 1 al nivel 5. El autor de la primera versión de un artículo, un administrador para los textos de partida, puede fijar otro mientras el artículo no guarde rastro de ningún voto. En Monnaie libre, nunca menos de 2: un solo voto nunca hace pasar un texto.\n- **B = 0,1**: en la red de confianza, `B^W` es tan pequeño que no cuenta.\n- **M** y **G**: los da el nivel de inercia del artículo (ver «Niveles de inercia»). G no se fija a mano: se deduce de la participación habitual del grupo.\n\n**Por defecto**\n\n- El nivel por defecto es el 3 (media): M = 55 %, un quórum de 50 en Monnaie libre, y el grupo pide un 75 % de votos a favor cuando vota como de costumbre. Todo artículo nuevo empieza en este nivel.\n- Al inicio, ningún artículo está en vigor. Razón de ser, Unicidad de la cuenta y Reciprocidad son Propuestas seed, puestas en primer plano para lanzar la votación, en el nivel 2 (baja). El título del documento está en el nivel 4 (alta), el orden de los artículos de cada sección en el nivel 2, todos los demás artículos en el nivel 3."
"fr": "Les valeurs des lettres de la formule (voir « Formule du seuil WoT ») et la façon dont le vote se déroule.\n\n**Un vote permanent, sans durée**\n\n- Chaque version se vote à tout moment, sans échéance. Chacun peut changer ou retirer son vote : le dernier fait foi.\n- Une proposition entre en vigueur dès qu'elle atteint son seuil. S'il y a déjà un texte en vigueur, il lui faut en plus une marge (voix pour moins voix exigées) plus large que celle de ce texte. Le texte remplacé redevient une proposition, avec ses votes : il peut revenir.\n- Si plusieurs propositions y parviennent, celle qui a la marge la plus large entre en vigueur.\n\n**Les lettres**\n\n- **W** : le nombre de membres de la toile de confiance Ğ1, relu sur la chaîne toutes les 6 heures.\n- **T** : les votes exprimés sur la version, pour et contre.\n- **Q**, le quorum : sous ce nombre de votants, ceux qui manquent comptent comme « non ». Chaque article prend celui de son cran : 12, 12, 50, 50 et 50 dans Monnaie libre, du cran 1 au cran 5. L'auteur de la première version d'un article, un administrateur pour les textes de départ, peut en fixer un autre tant que l'article ne garde la trace d'aucun vote. Dans Monnaie libre, jamais moins de 2 : une seule voix ne fait jamais passer un texte.\n- **B = 0,1** : dans la toile de confiance, `B^W` est si petit qu'il ne compte pas.\n- **M** et **G** : donnés par le cran d'inertie de l'article (voir « Niveaux d'inertie »). G n'est pas fixé à la main : il se déduit de la participation habituelle du groupe.\n\n**Par défaut**\n\n- Le cran par défaut est le 3 (moyenne) : M = 55 %, un quorum de 50 dans Monnaie libre, et, au-delà du quorum, le groupe demande 75 % de « pour » à sa participation habituelle. Tout nouvel article commence à ce cran.\n- Au départ, aucun article n'est en vigueur. Raison d'être, Unicité du compte et Réciprocité sont des Propositions seed, mises en avant pour lancer le vote, au cran 2 (basse). Le titre du document est au cran 4 (haute), l'ordre des articles de chaque section au cran 2, tous les autres articles au cran 3.",
"en": "The values of the letters of the formula (see “WoT threshold formula”) and how the vote runs.\n\n**A permanent vote, with no duration**\n\n- Every version can be voted on at any time, with no deadline. Anyone can change or withdraw their vote: the last one is the one that counts.\n- A proposal comes into force as soon as it reaches its threshold. If a text is already in force, it also needs a wider margin (votes in favour minus votes required) than that text has. The replaced text becomes a proposal again, with its votes: it can come back.\n- If several proposals get there, the one with the widest margin comes into force.\n\n**The letters**\n\n- **W**: the number of members of the Ğ1 web of trust, read again from the chain every 6 hours.\n- **T**: the votes cast on the version, for and against.\n- **Q**, the quorum: below this number of voters, those who are missing count as votes against. Each article takes the one of its level: 12, 12, 50, 50 and 50 in Monnaie libre, from level 1 to level 5. The author of the first version of an article, an administrator for the starting texts, can set another one as long as the article keeps no trace of any vote. In Monnaie libre, never less than 2: a single vote never passes a text.\n- **B = 0.1**: in the web of trust, `B^W` is so small that it does not count.\n- **M** and **G**: given by the article's level of inertia (see “Inertia levels”). G is not set by hand: it follows from the group's usual turnout.\n\n**By default**\n\n- The default level is 3 (medium): M = 55%, a quorum of 50 in Monnaie libre, and, beyond the quorum, the group asks for 75% of votes in favour at its usual turnout. Every new article starts at this level.\n- At the start, no article is in force. Purpose, Uniqueness of the account and Reciprocity are seed proposals, put forward to start the vote, at level 2 (low). The title of the document is at level 4 (high), the order of the articles of each section at level 2, all other articles at level 3.",
"es": "Los valores de las letras de la fórmula (ver «Fórmula del umbral WoT») y cómo se desarrolla la votación.\n\n**Una votación permanente, sin duración**\n\n- Cada versión se vota en cualquier momento, sin plazo. Cada cual puede cambiar o retirar su voto: el último es el que cuenta.\n- Una propuesta entra en vigor en cuanto alcanza su umbral. Si ya hay un texto en vigor, necesita además un margen (votos a favor menos votos exigidos) más amplio que el de ese texto. El texto sustituido vuelve a ser una propuesta, con sus votos: puede volver.\n- Si varias propuestas lo consiguen, entra en vigor la que tiene el margen más amplio.\n\n**Las letras**\n\n- **W**: el número de miembros de la red de confianza Ğ1, leído de nuevo en la cadena cada 6 horas.\n- **T**: los votos emitidos sobre la versión, a favor y en contra.\n- **Q**, el quórum: por debajo de este número de votantes, los que faltan cuentan como «no». Cada artículo toma el de su nivel: 12, 12, 50, 50 y 50 en Monnaie libre, del nivel 1 al nivel 5. El autor de la primera versión de un artículo, un administrador para los textos de partida, puede fijar otro mientras el artículo no guarde rastro de ningún voto. En Monnaie libre, nunca menos de 2: un solo voto nunca hace pasar un texto.\n- **B = 0,1**: en la red de confianza, `B^W` es tan pequeño que no cuenta.\n- **M** y **G**: los da el nivel de inercia del artículo (ver «Niveles de inercia»). G no se fija a mano: se deduce de la participación habitual del grupo.\n\n**Por defecto**\n\n- El nivel por defecto es el 3 (media): M = 55 %, un quórum de 50 en Monnaie libre, y, más allá del quórum, el grupo pide un 75 % de votos a favor con su participación habitual. Todo artículo nuevo empieza en este nivel.\n- Al inicio, ningún artículo está en vigor. Razón de ser, Unicidad de la cuenta y Reciprocidad son Propuestas seed, puestas en primer plano para lanzar la votación, en el nivel 2 (baja). El título del documento está en el nivel 4 (alta), el orden de los artículos de cada sección en el nivel 2, todos los demás artículos en el nivel 3."
}
}
]
@@ -760,9 +760,9 @@
"es": "Niveles de inercia"
},
"body": {
"fr": "À chaque cran, le groupe demande une part de « pour » parmi les votants (voir « Formule du seuil WoT »). Chaque cran a aussi son quorum, qui n'est pas un nombre minimal de votants : sous le quorum, les votants qui manquent comptent comme « non ». La part dépend du cran et du nombre de votants, comparé à la participation habituelle du groupe : au-delà du quorum, plus il y a de votants, plus elle baisse, jusqu'à la majorité M quand tout le monde vote.\n\n`Part exigée = M + (1 − M) × (1 − (T'/W)^G)`, où T' est le nombre de votants, ou le quorum s'il en manque.\n\n**Les cinq crans** : le quorum dans Monnaie libre, la part exigée quand le groupe vote comme d'habitude, puis quand tout le monde vote, et ce qui est à ce cran au départ.\n\n- **Cran 1 · très basse** : quorum 12 ; 60 % comme d'habitude, 50 % quand tout le monde vote. Aucun article au départ.\n- **Cran 2 · basse** : quorum 12 ; 67 % comme d'habitude, 50 % quand tout le monde vote. Raison d'être, Unicité du compte, Réciprocité, et l'ordre des articles de chaque section.\n- **Cran 3 · moyenne** : quorum 50 ; 75 % comme d'habitude, 55 % quand tout le monde vote. Le cran par défaut : tous les autres articles, et chaque nouvel article.\n- **Cran 4 · haute** : quorum 50 ; 83 % comme d'habitude, 60 % quand tout le monde vote. Le titre du document.\n- **Cran 5 · très haute** : quorum 50 ; 90 % comme d'habitude, 66 % quand tout le monde vote. Aucun article au départ.\n\n**La participation habituelle** est la médiane du nombre de votants des propositions du groupe votées depuis un an. Tant que le groupe n'a pas voté sur 5 propositions, elle vaut deux fois le quorum de référence du document : 100 votants dans Monnaie libre. Elle ne dépend pas du quorum d'un article. Elle reste entre 1 % et 50 % de l'électorat, et se mesure une fois par jour.\n\n**G** se calcule pour que la part exigée, à la participation habituelle, soit exactement celle du cran : `G = ln(1 − (s − M)/(1 − M)) / ln(p̃)`, où s est la part exigée comme d'habitude et p̃ la participation habituelle divisée par W.\n\nExemple : avec 7 224 membres et une participation habituelle de 120 votants, quand 120 personnes votent, il faut 72, 81, 90, 100 ou 108 voix pour, du cran 1 au cran 5 ; au cran 3, 75 % des 120 votants, soit 90. Sous le quorum, les absents comptent comme « non » : au cran 2 (quorum 12), 9 voix pour passent avec 3 « contre » au plus ; au cran 3 (quorum 50), il faut 39 voix pour, avec 11 « contre » au plus.",
"en": "At each level, the group asks for a share of votes in favour among the voters (see “WoT threshold formula”). Each level also has its quorum, which is not a minimum number of voters: below the quorum, the voters who are missing count as votes against. The share depends on the level and on the number of voters, compared with the group's usual turnout: beyond the quorum, the more voters, the lower it gets, down to the majority M when everyone votes.\n\n`Share asked = M + (1 − M) × (1 − (T'/W)^G)`, where T' is the number of voters, or the quorum if some are missing.\n\n**The five levels**: the quorum in Monnaie libre, the share asked when the group votes as usual, then when everyone votes, and what is at that level at the start.\n\n- **Level 1 · very low**: quorum 12; 60% as usual, 50% when everyone votes. No article at the start.\n- **Level 2 · low**: quorum 12; 67% as usual, 50% when everyone votes. Purpose, Uniqueness of the account, Reciprocity, and the order of the articles of each section.\n- **Level 3 · medium**: quorum 50; 75% as usual, 55% when everyone votes. The default level: all other articles, and every new article.\n- **Level 4 · high**: quorum 50; 83% as usual, 60% when everyone votes. The title of the document.\n- **Level 5 · very high**: quorum 50; 90% as usual, 66% when everyone votes. No article at the start.\n\n**The usual turnout** is the median number of voters on the group's proposals voted on over the past year. Until the group has voted on 5 proposals, it is twice the document's reference quorum: 100 voters in Monnaie libre. It does not depend on the quorum of an article. It stays between 1% and 50% of the electorate, and is measured once a day.\n\n**G** is computed so that the share asked, at the usual turnout, is exactly that of the level: `G = ln(1 − (s − M)/(1 − M)) / ln(p̃)`, where s is the share asked as usual and p̃ the usual turnout divided by W.\n\nExample: with 7,224 members and a usual turnout of 120 voters, when 120 people vote, it takes 72, 81, 90, 100 or 108 votes in favour, from level 1 to level 5; at level 3, 75% of the 120 voters, i.e. 90. Below the quorum, those missing count as votes against: at level 2 (quorum 12), 9 votes in favour pass with 3 votes against at most; at level 3 (quorum 50), it takes 39 votes in favour, with 11 votes against at most.",
"es": "En cada nivel, el grupo pide una proporción de votos a favor entre los votantes (ver «Fórmula del umbral WoT»). Cada nivel tiene además su quórum, que no es un número mínimo de votantes: por debajo del quórum, los votantes que faltan cuentan como «no». La proporción depende del nivel y del número de votantes, comparado con la participación habitual del grupo: más allá del quórum, cuantos más votantes, más baja, hasta la mayoría M cuando vota todo el mundo.\n\n`Proporción exigida = M + (1 − M) × (1 − (T'/W)^G)`, donde T' es el número de votantes, o el quórum si faltan.\n\n**Los cinco niveles**: el quórum en Monnaie libre, la proporción exigida cuando el grupo vota como de costumbre, luego cuando vota todo el mundo, y lo que está en ese nivel al inicio.\n\n- **Nivel 1 · muy baja**: quórum 12; 60 % como de costumbre, 50 % cuando vota todo el mundo. Ningún artículo al inicio.\n- **Nivel 2 · baja**: quórum 12; 67 % como de costumbre, 50 % cuando vota todo el mundo. Razón de ser, Unicidad de la cuenta, Reciprocidad, y el orden de los artículos de cada sección.\n- **Nivel 3 · media**: quórum 50; 75 % como de costumbre, 55 % cuando vota todo el mundo. El nivel por defecto: todos los demás artículos, y todo artículo nuevo.\n- **Nivel 4 · alta**: quórum 50; 83 % como de costumbre, 60 % cuando vota todo el mundo. El título del documento.\n- **Nivel 5 · muy alta**: quórum 50; 90 % como de costumbre, 66 % cuando vota todo el mundo. Ningún artículo al inicio.\n\n**La participación habitual** es la mediana del número de votantes de las propuestas del grupo votadas en el último año. Hasta que el grupo haya votado 5 propuestas, vale dos veces el quórum de referencia del documento: 100 votantes en Monnaie libre. No depende del quórum de un artículo. Se mantiene entre el 1 % y el 50 % del electorado, y se mide una vez al día.\n\n**G** se calcula para que la proporción exigida, con la participación habitual, sea exactamente la del nivel: `G = ln(1 − (s − M)/(1 − M)) / ln(p̃)`, donde s es la proporción exigida como de costumbre y p̃ la participación habitual dividida por W.\n\nEjemplo: con 7224 miembros y una participación habitual de 120 votantes, cuando votan 120 personas, hacen falta 72, 81, 90, 100 o 108 votos a favor, del nivel 1 al nivel 5; en el nivel 3, el 75 % de los 120 votantes, es decir 90. Por debajo del quórum, los que faltan cuentan como «no»: en el nivel 2 (quórum 12), 9 votos a favor pasan con 3 en contra como mucho; en el nivel 3 (quórum 50), hacen falta 39 votos a favor, con 11 en contra como mucho."
"fr": "À chaque cran, le groupe demande une part de « pour » parmi les votants (voir « Formule du seuil WoT »). Chaque cran a aussi son quorum : sous le quorum de l'article, les votants qui manquent comptent comme « non », et il faut autant de « pour » que si ce quorum avait voté. La part exigée dépend du cran et du nombre de votants, comparé à la participation habituelle du groupe : au-delà de ce quorum, plus il y a de votants, plus elle baisse, jusqu'à la majorité M quand tout le monde vote.\n\n`Part exigée = M + (1 − M) × (1 − (T'/W)^G)`, où T' est le nombre de votants, ou le quorum de l'article s'il en manque.\n\n**Les cinq crans** : le quorum dans Monnaie libre, la part exigée au-delà du quorum de l'article, à la participation habituelle, puis quand tout le monde vote, et ce qui est à ce cran au départ.\n\n- **Cran 1 · très basse** : quorum 12 ; 60 % à la participation habituelle, 50 % quand tout le monde vote. Aucun article au départ.\n- **Cran 2 · basse** : quorum 12 ; 67 % à la participation habituelle, 50 % quand tout le monde vote. Raison d'être, Unicité du compte, Réciprocité, et l'ordre des articles de chaque section.\n- **Cran 3 · moyenne** : quorum 50 ; 75 % à la participation habituelle, 55 % quand tout le monde vote. Le cran par défaut : tous les autres articles, et chaque nouvel article.\n- **Cran 4 · haute** : quorum 50 ; 83 % à la participation habituelle, 60 % quand tout le monde vote. Le titre du document.\n- **Cran 5 · très haute** : quorum 50 ; 90 % à la participation habituelle, 66 % quand tout le monde vote. Aucun article au départ.\n\n**La participation habituelle** est la médiane du nombre de votants des propositions du groupe votées depuis un an. Tant qu'elle repose sur moins de 5 propositions, elle vaut deux fois le quorum de référence du document : 100 votants dans Monnaie libre. Elle ne dépend pas du quorum d'un article. Elle est ramenée entre 1 % et 50 % de l'électorat, et se mesure une fois par jour.\n\n**G** se calcule pour que la part exigée, au-delà du quorum de l'article, soit exactement celle du cran à la participation habituelle : `G = ln(1 − (s − M)/(1 − M)) / ln(p̃)`, où s est cette part du cran (60, 67, 75, 83 ou 90 %) et p̃ la participation habituelle divisée par W.",
"en": "At each level, the group asks for a share of votes in favour among the voters (see “WoT threshold formula”). Each level also has its quorum: below the article's quorum, the voters who are missing count as votes against, and it takes as many votes in favour as if that quorum had voted. The share asked depends on the level and on the number of voters, compared with the group's usual turnout: beyond that quorum, the more voters, the lower it gets, down to the majority M when everyone votes.\n\n`Share asked = M + (1 − M) × (1 − (T'/W)^G)`, where T' is the number of voters, or the article's quorum if some are missing.\n\n**The five levels**: the quorum in Monnaie libre, the share asked beyond the article's quorum, at the usual turnout, then when everyone votes, and what is at that level at the start.\n\n- **Level 1 · very low**: quorum 12; 60% at the usual turnout, 50% when everyone votes. No article at the start.\n- **Level 2 · low**: quorum 12; 67% at the usual turnout, 50% when everyone votes. Purpose, Uniqueness of the account, Reciprocity, and the order of the articles of each section.\n- **Level 3 · medium**: quorum 50; 75% at the usual turnout, 55% when everyone votes. The default level: all other articles, and every new article.\n- **Level 4 · high**: quorum 50; 83% at the usual turnout, 60% when everyone votes. The title of the document.\n- **Level 5 · very high**: quorum 50; 90% at the usual turnout, 66% when everyone votes. No article at the start.\n\n**The usual turnout** is the median number of voters on the group's proposals voted on over the past year. While it rests on fewer than 5 proposals, it is twice the document's reference quorum: 100 voters in Monnaie libre. It does not depend on the quorum of an article. It is kept between 1% and 50% of the electorate, and is measured once a day.\n\n**G** is computed so that the share asked, beyond the article's quorum, is exactly that of the level at the usual turnout: `G = ln(1 − (s − M)/(1 − M)) / ln(p̃)`, where s is that share of the level (60, 67, 75, 83 or 90%) and p̃ the usual turnout divided by W.",
"es": "En cada nivel, el grupo pide una proporción de votos a favor entre los votantes (ver «Fórmula del umbral WoT»). Cada nivel tiene además su quórum: por debajo del quórum del artículo, los votantes que faltan cuentan como «no», y hacen falta tantos votos a favor como si hubiera votado ese quórum. La proporción exigida depende del nivel y del número de votantes, comparado con la participación habitual del grupo: más allá de ese quórum, cuantos más votantes, más baja, hasta la mayoría M cuando vota todo el mundo.\n\n`Proporción exigida = M + (1 − M) × (1 − (T'/W)^G)`, donde T' es el número de votantes, o el quórum del artículo si faltan.\n\n**Los cinco niveles**: el quórum en Monnaie libre, la proporción exigida más allá del quórum del artículo, con la participación habitual, luego cuando vota todo el mundo, y lo que está en ese nivel al inicio.\n\n- **Nivel 1 · muy baja**: quórum 12; 60 % con la participación habitual, 50 % cuando vota todo el mundo. Ningún artículo al inicio.\n- **Nivel 2 · baja**: quórum 12; 67 % con la participación habitual, 50 % cuando vota todo el mundo. Razón de ser, Unicidad de la cuenta, Reciprocidad, y el orden de los artículos de cada sección.\n- **Nivel 3 · media**: quórum 50; 75 % con la participación habitual, 55 % cuando vota todo el mundo. El nivel por defecto: todos los demás artículos, y todo artículo nuevo.\n- **Nivel 4 · alta**: quórum 50; 83 % con la participación habitual, 60 % cuando vota todo el mundo. El título del documento.\n- **Nivel 5 · muy alta**: quórum 50; 90 % con la participación habitual, 66 % cuando vota todo el mundo. Ningún artículo al inicio.\n\n**La participación habitual** es la mediana del número de votantes de las propuestas del grupo votadas en el último año. Mientras se base en menos de 5 propuestas, vale dos veces el quórum de referencia del documento: 100 votantes en Monnaie libre. No depende del quórum de un artículo. Se acota entre el 1 % y el 50 % del electorado, y se mide una vez al día.\n\n**G** se calcula para que la proporción exigida, más allá del quórum del artículo, sea exactamente la del nivel con la participación habitual: `G = ln(1 − (s − M)/(1 − M)) / ln(p̃)`, donde s es esa proporción del nivel (60, 67, 75, 83 o 90 %) y p̃ la participación habitual dividida por W."
}
}
]