diff --git a/CLAUDE.md b/CLAUDE.md index 8b17ff5..b8fca09 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -33,17 +33,20 @@ développer. ``` crates/ - ld-engine/ # PUR (zéro I/O) : threshold (formule inertielle, presets), edit (coquille vs fond, - # diff), assist (découpage, similarité, longueur), compose (adoption, aperçus) + ld-engine/ # PUR (zéro I/O) : threshold (formule inertielle), inertia (cinq crans, médiane, + # référence, échelle), edit (coquille vs fond, diff), assist (découpage, similarité, + # longueur), compose (adoption, aperçus) trustin-access/ # règles d'accès de trustinWallet : sees / opens / manages_access, groupes par défaut ld-server/ migrations/ # schéma SQLite — additif seulement src/ # lib.rs (routes, csrf, run) · config.rs (LD_*) · auth.rs (connect OAuth2, invitations, # dev, bootstrap) · team.rs (liens d'équipe) · docs.rs (lecture, aperçus) · proposals.rs (écrire, voter, signaler, - # traduire) · adoption.rs (balayage, verrou) · publish.rs (file → git) · wot.rs (W - # sur la chaîne) · seed.rs · web.rs (sert web/build) + # traduire) · adoption.rs (balayage, verrou) · participation.rs (p̃, une fois par + # jour) · publish.rs (file → git) · wot.rs (W sur la chaîne) · seed.rs · + # seed_amend.rs / inertia_amend.rs (amendements gardés) · web.rs (sert web/build) tests/api.rs # scénarios bout en bout -seeds/ # acte-engagement-certification.json (trilingue, 33 articles, I1/E1/E2 en vigueur) +seeds/ # acte-engagement-certification.json (trilingue, 33 articles, I1/E1/E2 en vigueur ; + # inertie 3, E1/E2 à 4) # upcoming/.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 @@ -52,7 +55,7 @@ web/src/ # g/[group]/docs · g/[group]/docs/[doc] (lecteur, # panneau dans l'URL ?onglet=&article=) · g/[group]/decisions · g/[group]/mandats · # g/[group]/protocoles (à venir) · acces (trustinWallet) ; /groupes, /decisions… redirigent -web/e2e/ # Playwright C1–C17 + M1 ; serve.sh = serveur jetable /tmp/ld-e2e sur :8092 +web/e2e/ # Playwright C1–C20 + M1 ; serve.sh = serveur jetable /tmp/ld-e2e sur :8092 docker/ # app.Dockerfile · app-compose.yml (sonic) .woodpecker/ # app.yml · maquette.yml docs/ # chantiers/ · adr/ · dev/BLUEPRINT-V2.md (doctrine de la maquette) · recherche/ @@ -73,7 +76,7 @@ maquette/ # v2 intacte (frontend Nuxt, backend FastAPI, docker, docs-v ```bash export PATH=$HOME/.cargo/bin:$PATH 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 # e2e : 18 contrôles +cd web && npm run check && npm test && npm run build && npm run e2e # e2e : 21 contrôles LD_DEV_LOGIN=1 cargo run -p ld-server # :8002, sert web/build cd web && npm run dev # :3002 à chaud @@ -89,7 +92,8 @@ 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** : une seule voix ne fait jamais passer un texte (C = 50 pour Monnaie libre) ; une coquille ne demande pas de vote, un changement de fond si ; un signalement de - contradiction bloque ; l'inertie se vote au cran au-dessus ; le groupe d'essai ne publie jamais. + contradiction bloque ; l'inertie de l'inertie hérite du cran de l'article (cinq crans, ADR 0007) ; + le groupe d'essai ne publie jamais. - **Écritures** : en-tête `x-requested-with: libredecision` obligatoire (CSRF) ; cookie `ld_session`. Les tests d'API passent par `Client` (`tests/api.rs`). - **Pièges vus** : `pkill -f target/debug/ld-server` tue son propre shell → `pkill -x ld-server` ; diff --git a/README.md b/README.md index aeed0fb..0620bab 100644 --- a/README.md +++ b/README.md @@ -48,7 +48,8 @@ Chantier en cours : **Acte d'engagement Certification** (Monnaie libre), en bin 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 se vote aussi (par défaut : un cran au-dessus). +- 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. diff --git a/docs/adr/0002-vote-permanent.md b/docs/adr/0002-vote-permanent.md index 53a9b81..399b0a1 100644 --- a/docs/adr/0002-vote-permanent.md +++ b/docs/adr/0002-vote-permanent.md @@ -1,5 +1,9 @@ # 0002 — Vote permanent : marge du texte en place et plancher C +> **Complétée par [0007](0007-inertie-cinq-crans.md)** (2026-10-30) : l'inertie a cinq crans, +> calés sur la participation habituelle du groupe, et un changement d'inertie se vote au cran +> de l'article — il n'est plus voté au cran au-dessus. + **Contexte.** Chaque article est sous vote permanent ; « dès qu'une proposition atteint le score, elle remonte en vigueur ». La formule inertielle Ğ1 donne un seuil faible quand peu de gens votent : sans garde-fou, une seule voix ferait passer un texte. Sans règle de départage, deux @@ -12,7 +16,8 @@ versions qui atteignent leur seuil s'échangeraient la place à chaque vote. (pour − requis) strictement plus large que la version en place. La version déplacée redevient une proposition avec ses votes : rien n'est perdu, tout peut revenir. - Les textes de départ sont des *seeds a minima* (0 vote, marge −C) : visibles, non adoptés. -- Changer l'inertie d'un article est une proposition votée à l'inertie du cran au-dessus. +- Changer l'inertie d'un article est une proposition votée à l'inertie du cran au-dessus + (remplacé le 2026-10-30 : elle hérite du cran de l'article, ADR 0007). - Le balayage tourne après chaque geste et toutes les 5 minutes, sous un verrou global. **Coût.** Une version en place très soutenue est difficile à déloger — c'est voulu. La taille diff --git a/docs/adr/0007-inertie-cinq-crans.md b/docs/adr/0007-inertie-cinq-crans.md new file mode 100644 index 0000000..66ad7c2 --- /dev/null +++ b/docs/adr/0007-inertie-cinq-crans.md @@ -0,0 +1,135 @@ +# 0007 — Inertie à cinq crans, calée sur la participation du groupe + +> Complète [0002](0002-vote-permanent.md) : la règle « l'inertie se vote au cran au-dessus » +> y est remplacée par l'héritage décrit ici. Décision d'Yvv du 2026-10-30 (revue, L10). + +**Contexte.** Quatre niveaux (`low`, `standard`, `high`, `max`) fixaient M et G une fois pour +toutes. Yvv, 2026-10-30 : « L'indice d'inertie doit avoir 5 niveaux. Tu mets par défaut au +milieu (3) pour toutes les propositions, (4) pour les 2 engagements structurels » ; « par +défaut l'inertie de l'indice d'inertie lui-même hérite de l'inertie de l'article » ; « une +échelle cohérente qui s'adapte aux nombres de certifiés et à la participation médiane aux +votes du groupe ». Au formulaire, il a choisi l'échelle **calée sur la participation** : +chaque cran exige une part fixe de « pour » quand le groupe vote comme d'habitude, puis se +relâche vers la majorité M quand plus de monde vote. + +## Décision + +**La formule reste celle de la Ğ1**, adoptée si « pour » ≥ ⌈R⌉ : + +``` +R = C + B^W + (M + (1 − M)·(1 − (T/W)^G)) · max(0, T − C) +``` + +Seuls M et G dépendent du cran k. M_k est la majorité à pleine participation ; s_k la part de +« pour » exigée **au-delà de C** à la participation habituelle p̃ ; G_k s'en déduit : + +``` +s_k = M_k + (1 − M_k)·(1 − p̃^G_k) ⇔ G_k = ln(1 − (s_k − M_k)/(1 − M_k)) / ln(p̃) +``` + +| Cran | Nom | M_k | s_k | +|---|---|---|---| +| 1 | très basse | 50 % | 60 % | +| 2 | basse | 50 % | 67 % | +| 3 | moyenne (par défaut) | 55 % | 75 % | +| 4 | haute (E1, E2 ; le titre du doc, lot D) | 60 % | 83 % | +| 5 | très haute | 66 % | 90 % | + +**La participation habituelle p̃** d'un groupe (`crates/ld-server/src/participation.rs`) : + +- l'échantillon : les propositions du groupe (tous ses documents, toutes sortes, brouillons + exceptés) qui portent au moins un vote sur leur révision actuelle, le dernier exprimé depuis + moins de 365 jours ; +- T de chacune est compté **au moment de la mesure** : c'est le T que voit la formule, le vote + étant permanent ; +- T̃ = la médiane de ces T (moyenne des deux du milieu pour un nombre pair) ; p̃ = T̃ / W, avec le + W du moment : quand la toile grandit, l'échelle demande toujours s_k au même nombre habituel + de votants ; +- il faut **au moins 5** propositions votées ; avant, la **référence** p0 = 2C/W s'applique + (Monnaie libre : 100 votants sur 7 224, 1,38 %) — deux fois le plancher, une participation + que le groupe doit de toute façon atteindre pour que C laisse place à la majorité. + +**Les bornes.** p̃ (mesurée ou de référence) est ramenée dans **[1 %, 50 %]**. Ainsi +0 < p̃ < 1, ln(p̃) est négatif et fini ; comme M_k < s_k < 1 pour chaque cran, +0 < 1 − (s_k − M_k)/(1 − M_k) < 1 et G_k est fini et positif (de 0,05 à 1,77). Alors : + +- **le seuil croît avec le cran** : la part exigée vaut 1 − (1 − M_k)·(T/W)^G_k, croissante en + M_k et en G_k, et M_k, G_k croissent avec k (à pleine participation, les crans 1 et 2 se + rejoignent à M = 50 %) ; +- **la part exigée décroît vers M quand la participation monte**, et vaut M à T = W ; +- **à p̃, la part au-delà de C vaut s_k** ; +- **C reste un plancher** : à T ≤ C, R = C + B^W ; une seule voix ne fait jamais passer un + texte dans Monnaie libre ; +- le groupe d'essai (W = 2, C = 1) : la référence vaut 100 %, ramenée à 50 % ; G reste fini ; + il faut les deux voix, à tout cran. + +La borne basse limite aussi l'effet de propositions à une voix multipliées pour faire baisser +la médiane (une médiane basse adoucit les seuils au-dessus d'elle) : à 1 % près, l'effet est +borné, et il faudrait plus de propositions de ce genre que de vraies. + +**Le recalcul : une fois par jour.** La mesure est gardée dans `settings` +(`participation:` : médiane, taille de l'échantillon, date) ; elle est reprise au +démarrage puis par le balayage (toutes les 5 minutes) dès qu'elle a 24 heures. Un seuil qui +bougerait à chaque vote exprimé ailleurs dans le groupe ne se lirait pas ; une fois par jour, +il reste stable dans la journée et suit pourtant la vie du groupe. W, lui, change à son rythme +(la toile, toutes les 6 heures), et p̃ = T̃ / W le suit aussitôt. + +**L'inertie de l'inertie hérite du cran de l'article.** Une proposition de changement +d'inertie se vote au cran actuel de l'article (`compose::voting_level`), comme son texte — +plus au cran au-dessus. Le cran se change en proposant l'un des cinq crans. + +**Un entier reste un entier.** Le calcul flottant de ln et de la puissance peut porter un +milliardième de voix : un seuil qui tombe juste sur un entier (90 % de 70 = 63) ne doit pas +monter d'une voix pour autant. La part inertielle est ramenée à l'entier quand elle en est à +moins de 10⁻⁹ (`threshold::settle`) ; cas réel : 101 membres qui votent tous, M = 55 %, C = 1, +il faut 56 voix, et non 57. + +## Les nombres + +W = 7 224, C = 50 ; voix pour exigées (tests `ld-engine/src/inertia.rs`) : + +| Médiane | T | cran 1 | cran 2 | cran 3 | cran 4 | cran 5 | +|---|---|---|---|---|---|---| +| 120 votants | 120 | 92 | 97 | 103 | 109 | 113 | +| 120 votants | 500 | 306 | 329 | 362 | 397 | 432 | +| 120 votants | 2 000 | 1 091 | 1 145 | 1 271 | 1 404 | 1 549 | +| 360 votants | 120 | 95 | 101 | 106 | 112 | 116 | +| 360 votants | 360 | 236 | 258 | 283 | 308 | 329 | +| 360 votants | 500 | 316 | 345 | 381 | 416 | 449 | +| 360 votants | 2 000 | 1 114 | 1 184 | 1 318 | 1 460 | 1 608 | + +Le cas de référence de la formule (vote forgeron v2.0.0 : W 7 224, 120 votants, M 50 %, +G 0,2, C 0 → 94 voix) reste le test de la formule elle-même, lettres données ; ce ne sont plus +les lettres d'aucun cran. + +## Les données + +- Migration `0005` : les quatre mots deviennent des crans (low → 2, standard → 3, high → 4, + max → 5 ; le cran 1 est nouveau) dans `units.inertia` et `proposals.inertia_target`. Chaque + mot est d'abord gardé tel quel (`inertia_legacy`, `inertia_target_legacy`) ; les `params` + des `adoptions` passées ne sont pas touchés (ils portent les M et G de leur jugement). Le + serveur lit toujours les quatre mots. Les adoptions nouvelles gardent en plus le cran, s_k + et p̃ (sa source, l'échantillon, la médiane). +- Le seed : 3 partout, 4 pour E1 et E2. +- Dans une base existante, E1 et E2 passent de 3 à 4 par un **amendement d'inertie** + (`crates/ld-server/src/inertia_amend.rs`), dans la lignée des amendements de seed : décidé + une fois par document, seulement si **aucun vote n'a changé l'inertie de l'article** (pas + d'adoption d'inertie, cran encore celui du seed). Une proposition d'inertie ouverte ne + l'arrête pas : elle reste ouverte et se vote au nouveau cran. Chaque décision est gardée + (`inertia_amendments`), écrite dans les journaux, se lit sur l'article (`inertia_changes` : + « passée de 3 à 4 : réglage de départ du texte ») et le document est republié. + +## Coût + +- Les seuils de Monnaie libre changent. Avec W = 7 224, C = 50 et la référence (100 votants), + le cran 3 demande 103 voix à 120 votants (`standard` : 105), 360 à 500 (369), 1 265 à 2 000 + (1 246), 3 996 quand tout le monde vote (3 637, M passant de 50 à 55 %) : un peu moins + jusqu'à un millier de votants, plus au-delà. Le cran 4 demande 108 à 120 votants (`high` : + 115), 395 à 500 (439), autant à pleine participation (M 60 %). Rien n'est en vigueur par un + vote aujourd'hui ; les seuils déjà affichés bougent. +- Le seuil d'une proposition dépend désormais des autres votes du groupe, par la médiane : une + fois par jour, un texte peut passer ou ne plus passer sans nouveau vote sur lui (comme quand W + change). Chaque entrée en vigueur garde la médiane qui l'a jugée. +- Le document publié (`document.json`) porte l'inertie en nombre (1 à 5), et non plus en mot. +- Le texte N1.1 du seed (« Niveaux d'inertie », quatre niveaux) est une proposition de la + communauté : il n'est pas modifié et décrit désormais autre chose que la règle en place. diff --git a/docs/adr/README.md b/docs/adr/README.md index 40e9e56..061724a 100644 --- a/docs/adr/README.md +++ b/docs/adr/README.md @@ -11,3 +11,4 @@ pas une décision : on en écrit une nouvelle qui la remplace, et on le note dan | [0004](0004-contradictions-signalees.md) | Contradictions : signalées par les personnes, bloquantes | 2026-10-21 | | [0005](0005-publication-git.md) | Publication par file d'envoi vers un dépôt git | 2026-10-21 | | [0006](0006-acces-connect-trustinwallet.md) | Accès : connect.monnaie-libre.fr, invitations, trustinWallet | 2026-10-21 | +| [0007](0007-inertie-cinq-crans.md) | Inertie à cinq crans, calée sur la participation du groupe (complète 0002) | 2026-10-30 | diff --git a/docs/chantiers/acte-certification/CHANTIER.md b/docs/chantiers/acte-certification/CHANTIER.md index 7f9d863..d1dfc7c 100644 --- a/docs/chantiers/acte-certification/CHANTIER.md +++ b/docs/chantiers/acte-certification/CHANTIER.md @@ -32,9 +32,11 @@ les applications clientes (Cesium, Ğecko…) peuvent suivre. certifiante. ») et les deux engagements fondamentaux (Unicité du compte, Réciprocité), marqués *seed a minima · 0 vote*. Au survol (ou toujours visibles sur mobile), trois gestes discrets : **Le vote** (en cours, inertie, formule, annexes) · **Les propositions** · **Proposer**. Ils - ouvrent un panneau latéral (une feuille sur mobile) dont l'état vit dans l'URL. + ouvrent un panneau latéral (une feuille sur mobile) dont l'état vit dans l'URL. Depuis + l'en-tête du document et depuis chaque vote, **« Réglages de la formule »** : W, C, B, la + participation habituelle du groupe et les cinq crans (onglet « Réglages » du panneau). 5. **En dessous**, les propositions en cours — les 30 autres articles du texte source, à zéro - vote, inertie standard — rangées par section (introduction, fondamental, technique, + vote, inertie 3 / 5 — rangées par section (introduction, fondamental, technique, conclusion, annexes, formule, inertie, ordonnancement), **une ligne par article** : un article qui a plusieurs versions (variantes du seed, propositions rivales) montre leur nombre et la meilleure en tête (niveau d'eau, pour / contre) ; la ligne se déplie sur ses @@ -56,14 +58,31 @@ W = électorat (Monnaie libre : taille de la toile, lue sur la chaîne toutes le géré : ses membres), T = votes exprimés, M = majorité, G = gradient, B = 0,1, **C = plancher de votants « pour »** (Monnaie libre : **50** ; groupe d'essai : 1). Adoptée si « pour » ≥ ⌈R⌉. -| Inertie | M | G | -|---|---|---| -| basse | 50 % | 0,1 | -| standard (au départ, partout) | 50 % | 0,2 | -| haute | 60 % | 0,4 | -| maximale | 66 % | 0,6 | +**Cinq crans d'inertie** (Yvv, 2026-10-30 ; ADR 0007). Seuls M et G dépendent du cran k : +M_k est la majorité à pleine participation, s_k la part de « pour » exigée **au-delà de C** quand +le groupe vote comme d'habitude (participation p̃), et G_k s'en déduit : +G_k = ln(1 − (s_k − M_k)/(1 − M_k)) / ln(p̃). -Moteur : `crates/ld-engine/src/threshold.rs` (testé : 7224 / 120 votants → 94 voix requises). +| Cran | Nom | M_k | s_k | Au départ | +|---|---|---|---|---| +| 1 | très basse | 50 % | 60 % | | +| 2 | basse | 50 % | 67 % | | +| 3 | moyenne | 55 % | 75 % | partout | +| 4 | haute | 60 % | 83 % | Unicité du compte, Réciprocité (et le titre du doc, à venir) | +| 5 | très haute | 66 % | 90 % | | + +**La participation habituelle p̃** = la médiane des votants des propositions du groupe votées +depuis un an (au moins 5), sur W ; avant, la référence 2C/W (Monnaie libre : 100 votants) ; +toujours ramenée entre 1 % et 50 %. Mesurée une fois par jour. Le seuil croît avec le cran, la +part exigée se relâche vers M quand plus de monde vote, et rien ne passe sous C voix pour. + +Avec W = 7 224, C = 50 et une médiane de 120 votants, il faut, à 120 votants, 92, 97, 103, 109 +et 113 voix pour ; à 500, 306, 329, 362, 397 et 432 ; à 2 000, 1 091, 1 145, 1 271, 1 404 et +1 549. + +Moteur : `crates/ld-engine/src/threshold.rs` (la formule ; son cas de référence, lettres +données : 7224 / 120 votants, M 50 %, G 0,2, C 0 → 94 voix) et `crates/ld-engine/src/inertia.rs` +(les crans, la médiane, la référence, les bornes) ; mesure : `crates/ld-server/src/participation.rs`. ### Le vote permanent @@ -77,8 +96,12 @@ Moteur : `crates/ld-engine/src/threshold.rs` (testé : 7224 / 120 votants → 94 ### L'inertie se vote aussi -Chaque article porte son inertie. La changer est une proposition, **votée elle-même à -l'inertie du cran au-dessus** (« inertie + ») : alourdir ou alléger demande plus que modifier. +Chaque article porte son inertie, un cran de 1 à 5. La changer est une proposition, **votée +elle-même au cran actuel de l'article** : l'inertie de l'inertie hérite de celle de l'article +(Yvv, 2026-10-30 ; elle était votée au cran au-dessus, « inertie + », depuis le 2026-10-21). +L'article dit le passé de son inertie : passée de tel cran à tel autre, par un vote ou par le +réglage de départ du texte (E1 et E2 relevés de 3 à 4 dans une base existante, seulement si +aucun vote n'a changé leur inertie : `crates/ld-server/src/inertia_amend.rs`). ### Corriger n'est pas voter diff --git a/docs/chantiers/acte-certification/CONTROLES.md b/docs/chantiers/acte-certification/CONTROLES.md index ebc1ba8..90cdbf6 100644 --- a/docs/chantiers/acte-certification/CONTROLES.md +++ b/docs/chantiers/acte-certification/CONTROLES.md @@ -12,7 +12,7 @@ Où tester : les contrôles qui écrivent (C5, C6, C7) se font dans le **groupe | C1 | L'accueil, sans session | ouvrir `/` sans être connectée | « Rendre possible la décision collective », puis le leitmotiv en trois lignes : « contexte et cadrage », « processus et modalités », « boîte à outils » ; « Se connecter avec sa clé Ğ1 » et sa note ; pas de piliers ni de groupes ; le menu à gauche avec les quatre outils, trois éteints | | C2 | L'accueil, avec session | se connecter : on arrive sur `/` | le titre, le leitmotiv, puis directement le choix du groupe : Monnaie libre en grand, Axiom, Librodrome, Groupe local Vallée Drôme Crestois ; **pas** l'Atelier du canal ; `/groupes` et « Mes groupes » (menu) ramènent ici | | C3 | Le texte en vigueur | Monnaie libre → Docs de référence → Acte d'engagement Certification | trois articles seulement (Raison d'être, Unicité du compte, Réciprocité), chacun « seed a minima · 0 vote » ; en dessous, « Propositions en cours » (30 lignes, une par article) | -| C4 | Gestes contextuels | survoler la Raison d'être → « Le vote » | un panneau : seuil 50 voix pour, il en manque 50 ; « La formule du seuil » se déplie ; l'URL garde le panneau ; Échap le ferme | +| C4 | Gestes contextuels | survoler la Raison d'être → « Le vote » | un panneau : seuil 50 voix pour, il en manque 50 ; « La formule du seuil » se déplie : « M — majorité à pleine participation : 55 % — inertie 3 / 5 · moyenne », et le lien « Réglages de la formule » ; l'URL garde le panneau ; Échap le ferme | | C5 | Entrée en vigueur | groupe d'essai : à deux, voter « Pour » sur « Les deux garanties réciproques » | au second vote, « … est entré en vigueur » ; le texte en vigueur compte quatre articles | | C6 | Coquille sans vote | groupe d'essai : Unicité du compte → « Le vote » → « Corriger une coquille », remplacer les apostrophes droites par des apostrophes typographiques (« Je m’engage sur l’honneur ») | « Coquille corrigée, sans toucher aux votes. » ; un changement de sens est refusé : « Ce changement touche au sens : propose-le comme modification. » | | C7 | Une décision par proposition | groupe d'essai : « Proposer un nouvel article », deux paragraphes « Je m'engage à… » | l'assistant : « Ce texte semble porter 2 décisions » ; « Découper en 2 brouillons » ; « Tes brouillons » apparaît | @@ -21,7 +21,7 @@ Où tester : les contrôles qui écrivent (C5, C6, C7) se font dans le **groupe | C10 | trustinWallet | ouvrir `/acces` sans être administratrice | « La gestion des accès est réservée aux administrateurs de trustinWallet. » (côté admin : créer un lien d'invitation) | | C11 | Une personne, une voix | avec un lien d'invitation, ouvrir le vote d'un article de Monnaie libre | « Ici, seuls les membres de la toile de confiance Ğ1 votent… » à la place des boutons ; dans le groupe d'essai, les boutons sont là | | C12 | Lien d'équipe | administrateur : `/acces` → « Liens d'équipe », cocher le groupe d'essai, créer ; l'ouvrir dans deux navigateurs, sous deux noms | chacun arrive sur ses groupes sous son nom ; dans `/acces`, « 2 / 30 personnes » et deux identités « venue par » le lien ; un nom déjà pris est refusé, même autrement écrit (« luna » pour « Luna ») ; sur un navigateur où quelqu'un est connecté, « Ce n'est pas moi » le déconnecte ; « Révoquer » ferme le lien | -| M1 | Mobile | téléphone (ou fenêtre étroite) | le logo dans la barre du haut ; l'accueil montre les groupes ; menu en tiroir (le nombre à côté de « Docs de référence », les quatre pastilles d'ambiance), les trois gestes visibles sans survol, le panneau s'ouvre en feuille | +| M1 | Mobile | téléphone (ou fenêtre étroite) | le logo dans la barre du haut ; l'accueil montre les groupes ; menu en tiroir (le nombre à côté de « Docs de référence », les quatre pastilles d'ambiance), les trois gestes visibles sans survol, le panneau s'ouvre en feuille ; « Réglages de la formule » depuis le vote : l'onglet « Réglages » visible, le tableau des cinq crans tient dans la feuille | | C13 | Logo et ambiances | ouvrir `/` (appareil en clair, puis en sombre) ; choisir chaque pastille d'ambiance ; recharger | le logo « Clé de voûte » (signe, *libre*, **Decision**) droit, sans tampon ; le sceau 井 en bas à droite ; première visite : pierre (clair) ou nuit (sombre) ; les quatre pastilles (Pierre, Calcaire, Nuit, Ardoise) changent l'ambiance, qui reste après rechargement ; favicon, icône Apple et manifeste servis | | C14 | La page d'un groupe | Monnaie libre | le nom ; le pavé des quatre piliers (Docs de référence « ouvert », les trois autres « à venir ») ; « En cours » : l'Acte d'engagement Certification, qui ouvre son lecteur | | C15 | Le menu | survoler les outils ; ouvrir Docs, puis Mandats ; revenir à l'accueil | « 1 » à côté de « Docs de référence » ; aucun outil surligné sur la page du groupe, seul celui où l'on est ensuite ; au survol, seul Docs réagit ; Mandats s'ouvre quand même (ses « À venir ») ; hors d'un groupe, les outils mènent au dernier groupe ouvert (ou à l'accueil s'il n'y en a pas) | @@ -29,6 +29,7 @@ Où tester : les contrôles qui écrivent (C5, C6, C7) se font dans le **groupe | C17 | Décisions | Monnaie libre → Décisions ; voter sur une version d'un article, recharger | une ligne par doc : « Acte d'engagement Certification · 33 modules à voter · dont 33 sans ton vote », puis « dont 32 » ; la ligne ouvre le lecteur | | C18 | La Raison d'être | Monnaie libre → Acte d'engagement Certification, puis EN, puis ES | en tête du texte en vigueur, « Raison d'être » : la première phrase en italique, puis deux paragraphes ; « Purpose », « Razón de ser » | | C19 | Les versions d'un article | Monnaie libre → « Propositions en cours » → « Connaissance suffisante » (au clavier : Tab jusqu'à la ligne, Entrée) | une seule ligne, « 2 versions » ; dépliée : « variante 1.0.0 » et « variante 0.4.0-draft », chacune avec son niveau et ce qui la distingue ; un clic sur une version ouvre son vote ; un nouveau clic sur la ligne la replie | +| C20 | Réglages de la formule et cinq crans | Monnaie libre → Acte d'engagement : « Réglages de la formule » (en-tête) ; puis Unicité du compte → « Le vote » → « Réglages de la formule » ; dans le groupe d'essai, Réciprocité → « Le vote » → « Proposer un changement d'inertie » → 5 → « Soumettre au vote » | W 5 745 (toile de confiance Ğ1), C 50, B 0,1 ; « 100 votants sur 5 745 (1,74 %), deux fois C : la participation de référence… (0 pour l'instant) » ; le tableau des cinq crans : très basse, basse, moyenne, haute, très haute ; M 50, 50, 55, 60, 66 % ; part exigée 60, 67, 75, 83, 90 % ; voix pour à 100 votants 80, 84, 88, 92, 95 ; depuis le vote : « Inertie · 4 / 5 · haute », la ligne du cran 4 marquée « cet article », 50 voix à 0 votant ; le sélecteur montre les cinq crans, 4 « actuelle » et grisé ; la proposition s'ouvre : « inertie vers 5 / 5 · très haute », votée à « inertie 4 / 5 · haute » | ## Au-delà de la liste diff --git a/seeds/acte-engagement-certification.json b/seeds/acte-engagement-certification.json index ac0f7b2..771e33a 100644 --- a/seeds/acte-engagement-certification.json +++ b/seeds/acte-engagement-certification.json @@ -1,5 +1,5 @@ { - "_source": "maquette/frontend/app/data/seeds/duniter-g1.bundle.json (doc engagement-certification, 33 clauses + 2 variantes). En vigueur au départ : I1, E1, E2 (seed a minima, aucun vote). Tout le reste : propositions ouvertes à 0 vote, inertie standard (Yvv, 2026-10-21). I1 « Raison d'être » remplace le Préambule (texte d'Yvv, revue du 2026-10-30).", + "_source": "maquette/frontend/app/data/seeds/duniter-g1.bundle.json (doc engagement-certification, 33 clauses + 2 variantes). En vigueur au départ : I1, E1, E2 (seed a minima, aucun vote). Tout le reste : propositions ouvertes à 0 vote (Yvv, 2026-10-21). Inertie 3 / 5 partout, 4 pour E1 et E2 (revue du 2026-10-30). I1 « Raison d'être » remplace le Préambule (texte d'Yvv, revue du 2026-10-30).", "slug": "acte-engagement-certification", "title": { "fr": "Acte d'engagement Certification",