YvvandClaude Fable 5 7cfc7ea352 v2 : nettoyage des orphelins v1 + documentation livrable
- 43 fichiers v1 supprimés (composants documents/protocols/sanctuary/toolbox,
  stores auth/documents/groups/mandates/organizations/protocols/votes,
  composables api/notifications/formula/websocket, utils doublons du moteur)
- nuxt.config épuré (polkadot retiré, KaTeX et apiBase gardés), meta v2
- README.md, CONTRIBUTING.md, CLAUDE.md réécrits pour la v2
- Build zéro erreur, 342/342 tests verts

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-11 14:09:05 +02:00

libreDecision

Boîte à outils de la première démocratie — décider ensemble, du trio à la population.

libreDecision fait de la décision un geste quotidien : chaque question tient en une phrase, l'outil propose le chemin le plus court — jamais plus lourd que l'enjeu — et tout ce qui est décidé reste révisable, mesuré, consigné. Le même outil sert un trio d'amis, une association, une coopérative ou la toile de confiance Ğ1 (marque blanche par construction).

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 6 routes de décision

Le triage (moteur pur, toujours expliqué en une phrase, toujours contournable) oriente chaque décision vers l'une de six routes :

Route Geste
solo « Personne d'autre n'est concerné — décide. » 2 gestes, moins de 10 secondes, trace facultative
record « Déjà tranché — je le consigne. » L'observatoire en un geste, adopté immédiatement
mandate « Ton mandat couvre — décide, c'est tracé. » Trace obligatoire + fenêtre d'objection 48 h
transmit « Le mandat d'un autre couvre — transmets-lui. » (ou conteste le mandat)
advice « Réversible et petit cercle — demande leur avis, puis décide. » 72 h
collective « Nous décidons. » Formulation, liste des concernés arrêtée, session de vote

Dérogation asymétrique : alourdir est libre (1 tap journalisé) ; alléger exige une note motivée et une fenêtre d'objection.

Les 5 modalités

Chaque protocole est nommé et référencé par une clause du Pacte — le modifier, c'est amender le Pacte.

  1. Consentement — « Ça me va / J'objecte » : zéro objection maintenue = adopté. Le repli universel : tout collectif en a un (invariant).
  2. Nuancé 6 niveaux — de « Pas du tout » à « Tout à fait », jamais « contre » ; histogramme visible, commentaire obligatoire sur les niveaux bas.
  3. Paramétrique — décider au curseur : faisceau des positions, médiane vivante, carte « Pour moi » ; la cristallisation finale est un geste humain daté du garant, jamais un automatisme.
  4. Élection — réservée aux mandats et aux problématiques d'échelle (6 méthodes de nomination, vote blanc, jamais de départage par l'outil).
  5. Binaire inertiel — le seuil C + B^W + (M + (1M)(1(T/W)^G))·max(0, TC), héritage Ğ1 remis à sa place : l'outil de dernier recours des très grands corps. L'Atelier des formules (/textes/formules) reste son école.

Local-first

  • Aucun serveur requis : tout l'état vit dans le navigateur (IndexedDB via idb-keyval, une clé par collectif).
  • Export / import de bundles JSON — la fédération, c'est l'échange de bundles, jamais une table.
  • Seeds livrés et importés par le même chemin que l'import utilisateur :
    • duniter-g1.bundle.json — la toile Ğ1 : 33 clauses Certification + 59 clauses Forgeron (textes votés intacts, provenance et décomptes conservés), protocoles, 3 mandats ;
    • atelier-du-canal.bundle.json — association fictive de 12 membres, le test permanent de marque blanche : décisions à tous les états, paramétrique vivant, épreuve du réel due.
  • 7 gabarits de collectif à la création (/creer) : page blanche, informel, association, coopérative, commune, monnaie libre, institution symétrique.

Stack

  • Frontend : Nuxt 4 (SPA, SSR off) + Vue 3 + TypeScript + Nuxt UI v3 + Pinia + UnoCSS ; npm ; port 3002
  • Moteurs purs : frontend/app/engine/ — triage, machine à états, seuils, médiane paramétrique, nuancé, périmètres — zéro dépendance Nuxt, testés vitest (342 tests)
  • Backend v1 (FastAPI + SQLAlchemy async) : conservé dans backend/ pour la future synchronisation multi-appareils — non requis pour utiliser ou développer le frontend

Démarrage

cd frontend
npm install
npm run dev        # http://localhost:3002
npm test           # vitest — 342 tests
npm run build      # build de production

Structure v2

frontend/app/
  engine/           # moteurs purs (barrel index.ts — seul point d'import)
  data/             # persistence.ts (IndexedDB), templates.ts (7 gabarits), seeds/*.bundle.json
  stores/           # collective.ts (le tenant) + decisions.ts (façade d'actions)
  composables/      # useMood, useFeed, useSearch
  components/       # par domaine : chemin/ decisions/ votes/ texts/ mandates/ feed/ onboarding/ common/
  pages/            # 14 routes : / decider decisions(+id, vote, observatoire)
                    #             textes(+slug, formules) mandats(+id, nouveau) creer donnees
  lexicon.ts        # source unique des libellés FR + test anti-lexique
  types/domain.ts   # le noyau du modèle
docs/dev/BLUEPRINT-V2.md   # la référence produit

Licence

Logiciel libre. Le fichier LICENSE sera posé avant la première publication.

S
Description
No description provided
Readme
4.4 MiB
Languages
Python 40.7%
Vue 32%
TypeScript 26%
CSS 1.1%
Dockerfile 0.2%