Le quorum Q (votants = pour + contre) remplace le C additif : T' = max(T, Q), la version passe si pour ≥ ⌈B^W + ratio(T')·T'⌉, ratio la courbe des cinq crans (M, G calé à la participation de référence, inchangé). La règle d'Yvv du 03/11 (« Ils comptent comme non ») est seule dans threshold::judged_voters. Pour l'écran : yes_needed (le total de pour qui passe avec les contre d'aujourd'hui) et no_needed (le total de contre qui tient les pour d'aujourd'hui, 0 si le quorum suffit) ; passe ⇔ pour ≥ yesNeeded ⇔ contre < noNeeded, éprouvé sur une grille. well_rated : la part tient sur ceux qui sont venus. Scale porte les quorums par cran, UnitState le quorum propre d'un article ; p0 reste 2·vote_floor/W. Vu rouge : sans la règle (T' = T), 9 tests échouent ; avec l'autre lecture d'un quorum (un minimum de votants, les absents non comptés), 8 échouent, dont « un contre n'aide jamais ». Chiffres de contrôle (W 5 707, p0 = 100/W) tenus : 9, 39, 46 au quorum ; 7, 8, 9, 9, 10 à dix votants. Le serveur suit au commit suivant. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
libreDecision
Rendre possible la décision collective — en fonction du contexte, processus et modalités, boîte à outils.
En ligne : https://decision.librodrome.org (le produit, v3) · la maquette v2, conservée pour
présenter le projet : https://maquette.decision.librodrome.org (maquette/).
Manifeste
Personne n'a jamais vécu en démocratie — alors nous la rêvons de jour, et nous la commençons à notre échelle. libreDecision attrape chaque décision en une phrase et propose le chemin le plus court : décide seul et trace-le, décide sous mandat, écoute puis décide, ou décidez ensemble — jamais plus lourd que l'enjeu. Ici on ne délègue pas, on mandate, et on reprend ; on n'est pas consulté, on s'instruit, puis on se prononce ; on ne s'affronte pas en deux camps, on règle des curseurs — et la position de chacun reste visible dans le faisceau, la médiane n'écrase personne, la dernière main est toujours humaine. Les concernés en premier lieu ont voix par construction, chacun voit pourquoi ; lever la main « ça me concerne » est un droit, pas une demande. Chaque décision dit ce qu'elle engage, ce qu'elle cherche à changer, et repasse l'épreuve du réel : rien n'est définitif, toute décision en vigueur garde sa poignée, se tromper est une donnée qu'on consigne. Les règles du jeu elles-mêmes — le Pacte — s'écrivent au fil de l'eau, par ceux qu'elles gouvernent, sous les boussoles Autonomie, Équilibre, Liaison. Du trio d'amis à la toile Ğ1 : le même geste, dix secondes, et l'observatoire qui apprend de nous. La ville change, le puits demeure.
Les quatre outils
| Outil | Ce qu'il fait | État |
|---|---|---|
| Décisions | funnel assisté pour choisir les modalités, journal des décisions | à venir |
| Docs de référence | acte d'engagement, licence, charte, constitution… sous vote permanent | actif |
| Mandats | création et révocation de tout mandat | à venir |
| Protocoles | workflows sans organe statutaire, rôles tournants, automatisations | à venir |
Le produit avance un chantier à la fois, chacun livré complet et en production avant le
suivant — feuille de route : docs/chantiers/README.md.
Chantier en cours : Acte d'engagement Certification (Monnaie libre), en binôme Yvv + Chiara.
Comment marche un doc de référence
- On arrive sur le texte en vigueur, seul, lisible. Trois gestes contextuels : consulter le vote, voir les propositions, proposer une modification.
- Chaque article est sous vote permanent : une proposition qui atteint son seuil (formule inertielle Ğ1, plancher C de votants « pour ») remonte en vigueur et remplace la version en place — si elle tient une marge plus large. Les textes de départ sont des seeds a minima, à zéro vote.
- Corriger n'est pas voter : une coquille se corrige sans vote ; un changement de fond ouvre une nouvelle révision, dont les votes antérieurs sont à reconfirmer.
- Deux propositions qui se contredisent ne passent pas ensemble : un signalement bloque la seconde tant qu'il n'est pas levé.
- L'inertie de chaque article (cinq crans, 3 par défaut, calés sur la participation habituelle du groupe) se vote aussi, au cran de l'article.
- Tout ce qui entre en vigueur est publié automatiquement dans un dépôt git (fr/en/es + JSON) lu par les applications clientes.
Le détail, les décisions et leurs raisons : docs/chantiers/acte-certification/CHANTIER.md
et docs/adr/.
Stack
- Serveur : Rust (edition 2024, toolchain 1.99 épinglée) — axum 0.8, sqlx/SQLite, tokio.
Trois crates :
ld-engine(moteur pur : seuils, édition, assistant, composition),trustin-access(règles d'accès de trustinWallet),ld-server(API + publication + service de l'interface). - Interface : SvelteKit 2 / Svelte 5 (runes), SPA statique servie par le serveur ; trilingue fr · en · es dès le départ (le français fait foi).
- Déploiement : une seule image Docker, Woodpecker → sonic (fabio), volume de données nommé.
Démarrer
export PATH=$HOME/.cargo/bin:$PATH
cd web && npm ci && npm run build && cd .. # l'interface compilée
LD_DEV_LOGIN=1 cargo run -p ld-server # API + interface sur :8002
cd web && npm run dev # interface à chaud sur :3002 (proxy /api → :8002)
LD_DEV_LOGIN=1 ouvre une connexion de développement (sans clé, membre de tous les groupes) —
jamais en production. Toutes les variables : .env.example.
Vérifier (la boucle)
cargo fmt --all --check && cargo clippy --workspace --all-targets -- -D warnings && cargo test --workspace
cd web && npm run check && npm test && npm run build && npm run e2e
Les contrôles d'usage (C1–C12, M1) sont décrits dans
docs/chantiers/acte-certification/CONTROLES.md ;
les tests de Chiara en sont la version humaine.
Structure
crates/
ld-engine/ # moteur pur, sans I/O : threshold, edit, assist, compose
trustin-access/ # qui voit, qui ouvre, qui gère les accès
ld-server/ # axum : auth Ğ1 + invitations, docs, propositions, votes, adoption, publication
migrations/ # schéma SQLite (données runtime : jamais réécrites)
tests/api.rs # scénarios bout en bout de l'API
seeds/ # documents de départ (JSON trilingue), instanciés une seule fois par groupe
web/
src/lib/ # api, session, i18n (fr source, en, es), composants
src/routes/ # accueil, groupes, lecteur du texte, trustinWallet (/acces)…
e2e/ # Playwright : C1–C12, M1
docker/ # app.Dockerfile + app-compose.yml (sonic)
.woodpecker/ # app.yml (le produit) · maquette.yml (la maquette)
docs/ # chantiers/, adr/, dev/ (blueprint v2), recherche/
maquette/ # la v2 Nuxt + FastAPI, telle quelle
Licence
Logiciel libre sous GNU Affero General Public License, version 3 (AGPL-3.0-only, choix d'Yvv
du 2026-11-02) : quiconque fait tourner une version modifiée en ligne doit en publier le code.
Le texte est dans LICENSE.