Lot S, phase 2 : le quorum documenté (ADR 0013, notes dans 0002 et 0007, CHANTIER, CONTROLES, CLAUDE.md)

ADR 0013 : la formule sur T' = max(T, Q), « Ils comptent comme non » dans
threshold::judged_voters, les quorums par cran 12 · 12 · 50 · 50 · 50 (1 dans le
groupe d'essai), le quorum d'un article fixé par l'auteur avant le premier vote
(« un vote existe » : quorum::voted_units, la limite du vote retiré), p0 = 2Q₀/W,
l'amendement 2026-11-03-quorums-par-cran, les nombres, le coût (une voix passe
dans le groupe d'essai ; F1.1 et N1.1 du seed décrivent encore C).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
Yvv
2026-11-03 05:15:18 +01:00
co-authored by Claude Opus 5.5
parent 17addf8d9f
commit 40ab6e41c5
7 changed files with 212 additions and 37 deletions
+13 -5
View File
@@ -33,7 +33,8 @@ développer.
```
crates/
ld-engine/ # PUR (zéro I/O) : threshold (formule inertielle), inertia (cinq crans, médiane,
ld-engine/ # PUR (zéro I/O) : threshold (formule inertielle sur un quorum, judged_voters,
# yes_needed / no_needed), inertia (cinq crans, leurs quorums, bornes, médiane,
# référence, échelle), edit (coquille vs fond, diff), assist (découpage, similarité,
# longueur), compose (adoption, aperçus), ballot (bulletin scellé ld1:, le dernier
# fait foi, jugement d'une transaction), address (SS58, préfixe g1), objection
@@ -42,7 +43,7 @@ crates/
# d'une section : qui en est, complété à la fin, places), pending (modules à voter)
trustin-access/ # règles d'accès de trustinWallet : sees / opens / manages_access, vote_way (serveur ou
# chaîne), answers_typo, lifts_objection / reiterates_objection, reads_message,
# groupes par défaut
# sets_quorum, groupes par défaut (TEST_GROUP)
ld-server/
migrations/ # schéma SQLite — additif seulement
src/ # lib.rs (routes, csrf, run) · config.rs (LD_*) · auth.rs (connect OAuth2, invitations,
@@ -56,15 +57,19 @@ crates/
# le dernier fait des Propositions seed, ADR 0011) · ballots.rs (vote groupé,
# bulletins de la chaîne Ğ1, confirmation, « ton vote ») · indexer.rs (txComments)
# · modules.rs / order.rs / doc_title.rs (les modules, ADR 0009 : l'ordre d'une
# section, le titre du document) · module_amend.rs (ajout gardé) · web.rs (sert web/build)
# section, le titre du document) · module_amend.rs (ajout gardé) · quorum.rs (le quorum
# d'un article, PUT /units/{id}/quorum ; « un vote existe » : voted_units, ADR 0013) ·
# quorum_amend.rs (les quorums par cran, amendement gardé) · web.rs (sert web/build)
tests/ # api.rs (scénarios bout en bout) · ballots.rs (vote par la chaîne, indexeur simulé) ·
# objections.rs · typos.rs (lot F, horloge avancée, migration 0008) · modules.rs (ordre,
# titre, ajout gardé) · seed_proposals.rs (Propositions seed, publication suspendue) ·
# 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)
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)
# modules en vigueur sans vote : le titre à 4, l'ordre de chaque section à 2 ;
# quorums par cran : 12 · 12 · 50 · 50 · 50 Monnaie libre, 1 partout essai)
# upcoming/<groupe>.json : les « À venir » des outils d'un groupe (fr, en, es), lus au démarrage
web/src/
lib/i18n/ # fr.ts SOURCE (types Key) · en.ts · es.ts — parité testée
@@ -120,7 +125,10 @@ docker build -f docker/app.Dockerfile --target production . # rejoue toute la
`ld-engine` avant d'être câblée. Le serveur ne décide jamais l'accès seul : `trustin-access`.
- **Invariants** : au départ, aucun article n'est en vigueur : I1, E1 et E2 sont des Propositions
seed (ouvertes, mises en avant, au cran 2 ; seuls les modules sont des *seeds a minima*), et la
publication d'un document attend son premier texte en vigueur (ADR 0011) ; une seule voix ne fait jamais passer un texte (C = 50 pour Monnaie libre) ;
publication d'un document attend son premier texte en vigueur (ADR 0011) ; un quorum par cran
(12 · 12 · 50 · 50 · 50 dans Monnaie libre), que l'auteur d'un article change avant le premier
vote : sous le quorum, les votants qui manquent comptent comme « non », et une seule voix ne fait
jamais passer un texte (quorum ≥ 2), sauf dans le groupe d'essai (quorum 1 ; ADR 0013) ;
une coquille ne demande pas de vote, un changement de fond si ; la coquille d'un autre attend
son auteur (un administrateur pour le seed) ou 3 jours, et en vigueur seule une coquille validée
change le texte ; une objection retient la dernière arrivée jusqu'à sa levée (jamais un texte en