Objections « redit » / « contredit » à la place des signalements : la dernière arrivée des deux versions n'est plus votable (repli, panier, chaîne : un vote déjà scellé est gardé mais ne la fait pas entrer) ; un texte en vigueur ne l'est jamais. L'auteur répond en modifiant l'article visé (proposition liée) ou en reformulant ; la personne qui objecte lève ou réitère depuis ses messages ; sans réponse sous 3 jours, l'objection est levée. Un administrateur peut lever. Coquilles : la sienne passe tout de suite ; celle d'un autre attend l'auteur (valider / refuser), passe seule au bout de 3 jours, et l'auteur garde la main tant que le texte n'est pas en vigueur. En vigueur, seule une coquille validée corrige (auteur de la version, administrateur pour un texte semé). Deux coquilles en attente : la seconde se mesure au texte voté ; à l'application, celle qui ne colle plus est périmée. Messagerie dans l'application (boîte, non-lus, gestes, échéance), chaque personne ne lit que les siens. Échéances par le balayage existant, avec rattrapage au démarrage et horloge injectable (route de dev). Migration 0008 additive : les signalements deviennent des « contredit », sans perte. 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 — la licence reste à choisir (question ouverte à Yvv) ; le fichier LICENSE sera posé avant toute publication du code.