Interface au strict nécessaire (le lot U refera la présentation) : la marque « Proposition seed » là où une version est montrée (liste des propositions, Détails, panneau Propositions), seedProposal?: boolean dans types.ts ; au-dessus des ordres, « Aucun article n'est en vigueur » quand c'est le cas. e2e : C3 (aucun texte en vigueur, 33 lignes, trois Propositions seed au cran 2), C9 et C18 (« si tout passe »), C20, C23, C24 et M1 par la liste des propositions dans Monnaie libre ; dans le groupe d'essai, I1, E1 et E2 entrent d'abord par le vote (seedsInForce : deux voix puis leur retrait, le texte reste en vigueur) pour les contrôles qui lisent un texte en vigueur (C4 à C6, C20, C21, C24, C28 à C31). Boucle e2e : 35 / 35. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
a3c0a76), S relancé à 04 h 05 ; deux défauts du menu et du sceau en liste d'attente
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.