forked from yvv/decision
v3 : ADR 0009, les modules d'ordre et de titre ; chantier, contrôles C25–C27, ADR 0007, structure
ADR 0009 : un module est une unité du document (units.kind), ses versions des propositions ; l'ordre d'une section se complète à la fin quand des articles entrent ou sortent pendant son vote (ni caduc, ni à reconfirmer) ; un nouvel article se place à la fin de sa section ; à l'entrée d'un titre, ses traductions passent « à revoir » ; l'ajout gardé des documents existants. ADR 0007 : l'échantillon de la participation nomme ses statuts (open, in_force, applied) ; ce que les réglages disent d'une participation ramenée. CHANTIER : ce que voit la personne, la règle des modules, les crans 2 et 4. CONTROLES : C3, C17, C20 mis à jour, C25 à C27, le passage du lot D (29 / 29). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
@@ -30,16 +30,21 @@ s_k = M_k + (1 − M_k)·(1 − p̃^G_k) ⇔ G_k = ln(1 − (s_k − M_k)/(1
|
||||
| Cran | Nom | M_k | s_k |
|
||||
|---|---|---|---|
|
||||
| 1 | très basse | 50 % | 60 % |
|
||||
| 2 | basse | 50 % | 67 % |
|
||||
| 2 | basse (l'ordre des articles de chaque section, ADR 0009) | 50 % | 67 % |
|
||||
| 3 | moyenne (par défaut) | 55 % | 75 % |
|
||||
| 4 | haute (E1, E2 ; le titre du doc, lot D) | 60 % | 83 % |
|
||||
| 4 | haute (E1, E2 ; le titre du document, ADR 0009) | 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 et
|
||||
propositions retirées exceptés) qui portent au moins un vote sur leur révision actuelle, le dernier exprimé depuis
|
||||
moins de 365 jours ;
|
||||
- l'échantillon : les propositions du groupe (tous ses documents, toutes sortes, modules
|
||||
compris) **ouvertes, en vigueur ou appliquées** — statuts `open`, `in_force`, `applied`,
|
||||
nommés un par un dans la requête — qui portent au moins un vote sur leur révision actuelle,
|
||||
le dernier exprimé depuis moins de 365 jours. Les brouillons et les propositions retirées
|
||||
n'en sont pas ; un statut qui viendrait à exister n'y entre pas tant qu'il n'est pas nommé
|
||||
(lot D, 2026-10-31 : la liste d'exclusion `NOT IN ('draft', 'withdrawn')` laissait entrer
|
||||
tout statut nouveau sans qu'on l'ait décidé ; test
|
||||
`the_usual_participation_counts_the_statuses_it_names_and_only_those`) ;
|
||||
- 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
|
||||
@@ -63,6 +68,12 @@ s_k = M_k + (1 − M_k)·(1 − p̃^G_k) ⇔ G_k = ln(1 − (s_k − M_k)/(1
|
||||
- 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.
|
||||
|
||||
Les réglages de la formule disent les deux, dans cet ordre (lot D) : la mesure telle quelle — sa
|
||||
part est celle de la valeur elle-même, une médiane de 2,5 votants sur 4 fait 62,5 %, jamais
|
||||
« 3 sur 4 » arrondi d'abord (`web/src/lib/participation.ts`, `usualShown`) —, puis ce que le
|
||||
groupe en fait quand elle est ramenée : « le groupe demande ses voix pour comme si 2 personnes
|
||||
votaient (50 %) » (contrôle C27).
|
||||
|
||||
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. Les propositions retirées
|
||||
|
||||
@@ -0,0 +1,117 @@
|
||||
# 0009 — Les modules : l'ordre des articles de chaque section, le titre du document
|
||||
|
||||
> Complète [0002](0002-vote-permanent.md) (vote permanent), [0007](0007-inertie-cinq-crans.md)
|
||||
> (inertie à cinq crans) et [0008](0008-vote-par-transaction.md) (vote par la chaîne). Décisions
|
||||
> d'Yvv à la revue du 2026-10-30 (L11) ; la règle des articles qui entrent ou sortent pendant le
|
||||
> vote d'un ordre est le choix du lot D, isolé dans `ld-engine` pour être changé seul.
|
||||
|
||||
**Contexte.** Un texte de référence vit article par article : chacun entre en vigueur à son
|
||||
seuil. Deux choses n'avaient pas de vote : la place des articles dans leur section (fixée par le
|
||||
seed, puis « après tel article » au choix de qui proposait) et le titre du document (écrit une
|
||||
fois, au seed). Yvv, 2026-10-30 : « En fin de section, il y a un "module" qui permet de changer
|
||||
l'ordre des "articles". Lui-même à (2), avec une simple liste clipable. » ; « Le titre du doc à
|
||||
(4). » ; « Non, titre et texte ensemble » — le titre d'un article reste voté avec son texte :
|
||||
seul le titre du document est un module à part.
|
||||
|
||||
## Décision
|
||||
|
||||
### Un module est une unité du document, ses versions sont des propositions
|
||||
|
||||
`units.kind` (`article` par défaut, `title`, `order` ; migration `0007_modules.sql`, additive).
|
||||
Un module a, comme un article, une inertie, une version en vigueur, des propositions ouvertes,
|
||||
des votes, des changements d'inertie. Tout ce qui sert au vote d'un article lui sert sans
|
||||
chemin à part : le vote déplié, le panier, le bulletin sur la chaîne Ğ1 (`ballots.rs` valide
|
||||
les lignes contre les propositions du document : un module y est), le balayage, l'adoption
|
||||
(`ld_engine::compose`), la marge du texte en place (0002), le cran (0007), « Décisions »
|
||||
(`ld_engine::pending`).
|
||||
|
||||
- **Le titre du document** — code `titre`, inertie **4**. Une version = un titre dans la langue
|
||||
source (corps vide). Elle se propose en tête du lecteur (« Proposer un autre titre »,
|
||||
`POST /api/units/{id}/title`) ; une coquille s'y corrige sans vote (0003) ; elle se traduit.
|
||||
- **L'ordre d'une section** — code `ordre.<section>`, inertie **2**, un par section. Une version =
|
||||
la liste des articles de la section, un identifiant par ligne. Elle se propose en fin de
|
||||
section (« Proposer un autre ordre », `POST /api/units/{id}/order`) avec une liste où l'on
|
||||
clique : un article, puis sa nouvelle place, ou ses flèches, ou le clavier (Entrée choisit,
|
||||
haut et bas déplacent). Un ordre ne se corrige pas et ne se traduit pas (`409 order_fixed`) :
|
||||
on en propose un autre.
|
||||
- L'écriture générique (`POST /api/docs/{id}/proposals`) refuse un module (`400 module`) : chacun
|
||||
se propose à sa place.
|
||||
|
||||
### Qui est dans l'ordre d'une section
|
||||
|
||||
Les articles de la section qui ont un texte en vigueur ou une version ouverte (texte ou
|
||||
retrait) ; ni les brouillons, ni les retirés. Dans l'ordre des positions. La même règle en Rust
|
||||
(`DocState::members`) et en SQL (`order::sections_now`). Une section d'**un seul article n'a
|
||||
rien à décider** : son ordre n'est jamais « à voter », ni montré, ni compté (`Module.moot`).
|
||||
|
||||
### Quand des articles entrent ou sortent pendant le vote d'un ordre : complété à la fin
|
||||
|
||||
Une proposition d'ordre garde **les votes reçus**. Ce qui est voté est l'ordre relatif des
|
||||
articles qu'elle nomme ; on le lit toujours contre les articles présents
|
||||
(`ld_engine::order::fit`) :
|
||||
|
||||
- les articles encore dans la section gardent l'ordre proposé ;
|
||||
- un article **arrivé depuis** se place **à la fin**, dans l'ordre de la section (« 1 article
|
||||
entré depuis, placé à la fin ») ;
|
||||
- un article **sorti** (retiré, rejeté) disparaît de l'ordre, sans autre effet ;
|
||||
- une proposition qui, ainsi complétée, **redit l'ordre en vigueur** ne peut pas entrer (« c'est
|
||||
l'ordre en vigueur ») : elle reste ouverte, sans effet, jusqu'à ce qu'un autre ordre entre.
|
||||
|
||||
Écartées : **caduque** (un vote permanent dans une section vivante ne passerait jamais : chaque
|
||||
nouvel article remettrait les compteurs à zéro) et **à reconfirmer** (même effet, plus lent, et
|
||||
demande aux votants un geste qu'ils ne savent pas devoir faire). Compléter à la fin respecte ce
|
||||
qui a été voté — l'ordre entre les articles connus — et la règle de placement par défaut.
|
||||
|
||||
### Les articles nouveaux se placent à la fin de leur section
|
||||
|
||||
Une proposition de nouvel article nomme sa **section** ; elle s'y place à la fin
|
||||
(`ld_engine::order::place_at_end`). Un ancien client qui nomme un article (`afterUnitId`) obtient
|
||||
la fin de la section de cet article. « Après tel article » n'existe plus : la place se vote, par
|
||||
l'ordre de la section.
|
||||
|
||||
### Quand un ordre entre en vigueur
|
||||
|
||||
Il redistribue **les positions déjà tenues par la section** à ses articles, dans le nouvel ordre
|
||||
(`ld_engine::order::positions`) : rien ne bouge hors de la section, aucun texte ne change, aucun
|
||||
vote d'article n'est touché. L'ordre d'avant redevient une proposition ouverte, avec ses votes,
|
||||
et peut revenir.
|
||||
|
||||
### Quand un titre entre en vigueur
|
||||
|
||||
`documents.title` prend le nouveau titre dans la langue source. Les traductions restent
|
||||
éditoriales (le français voté fait foi) : la nouvelle version reprend celles du titre qu'elle
|
||||
remplace, attachées au texte de ce titre-là, donc **« traduction à revoir »** jusqu'à ce qu'une
|
||||
personne traduise le nouveau. Le titre du document dans les autres langues suit ses traductions,
|
||||
fraîches ou à revoir (`doc_title::sync`, rejoué aussi à chaque mise en file de publication : une
|
||||
coquille ou une traduction du titre en vigueur s'y reporte).
|
||||
|
||||
### Publication
|
||||
|
||||
`fr.md` ne change pas de forme : les articles dans leur ordre en vigueur, sous le titre en
|
||||
vigueur. `en.md` / `es.md` portent une ligne de commentaire quand la traduction du titre est à
|
||||
revoir. `document.json` gagne `modules` : le titre (inertie, statut, date d'entrée, votes,
|
||||
traductions et leur fraîcheur) et chaque ordre (section, inertie, statut, date, votes, articles
|
||||
par leur code).
|
||||
|
||||
### Les documents qui existent déjà
|
||||
|
||||
Le seed déclare les crans (`"modules": {"title": {"inertia": 4}, "order": {"inertia": 2}}`) ; une
|
||||
base neuve crée les modules en même temps que les articles. Un document existant les reçoit par
|
||||
un **ajout gardé** (`crates/ld-server/src/module_amend.rs`, dans la ligne de `seed_amend.rs` et
|
||||
`inertia_amend.rs`) : une seule fois par document (journal `module_amendments`, migration
|
||||
`0007`), depuis l'état présent — le titre en vigueur est le titre actuel du document, avec ses
|
||||
traductions ; l'ordre en vigueur d'une section est l'ordre actuel de ses articles —, sans
|
||||
toucher un article ni un vote. Les versions créées sont des « seed a minima » (en vigueur sans
|
||||
vote, marge −C) : elles restent sous vote comme tout texte. Un document qui a déjà des modules,
|
||||
ou sans titre, est noté et laissé.
|
||||
|
||||
## Ce que ça coûte
|
||||
|
||||
- Le seed de l'acte d'engagement passe de 33 à **41 modules à voter** : 33 articles, le titre, et
|
||||
l'ordre de 7 sections (l'ordonnancement n'a qu'un article). C17 et les comptes de
|
||||
« Décisions » le disent.
|
||||
- Les aperçus (« si les bien cotées passent », « si tout passe ») montrent les articles seuls :
|
||||
un ordre ou un titre proposé n'y change pas encore la place des articles ni le titre.
|
||||
- Un ordre ouvert sur une section revenue à un seul article reste en base, sans être montré ni
|
||||
compté.
|
||||
- Les codes des nouveaux articles restent `N<n>` (sans lien avec la section), comme avant.
|
||||
@@ -13,3 +13,4 @@ pas une décision : on en écrit une nouvelle qui la remplace, et on le note dan
|
||||
| [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 |
|
||||
| [0008](0008-vote-par-transaction.md) | Le vote par transaction sur la chaîne Ğ1 : bulletin scellé, confirmation par l'indexeur, le dernier fait foi | 2026-10-30 |
|
||||
| [0009](0009-modules-ordre-et-titre.md) | Les modules : l'ordre des articles de chaque section (inertie 2), le titre du document (inertie 4) | 2026-10-31 |
|
||||
|
||||
Reference in New Issue
Block a user