From c3a3c6923fd8e676ec96f0e209cf489e0a2f30bc Mon Sep 17 00:00:00 2001 From: Yvv Date: Sat, 31 Oct 2026 01:16:44 +0100 Subject: [PATCH] =?UTF-8?q?Dossier=20d'acte=20M2=20+=20M3a=20fig=C3=A9=20s?= =?UTF-8?q?ur=2074f96be=20(vote=20par=20la=20cha=C3=AEne=20=C3=A9teint)=20?= =?UTF-8?q?;=20tableau=20:=20B=20relu,=20B2=20lanc=C3=A9,=20Q8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Claude Opus 5.5 --- actes/2026-10-31-m2-vote.md | 131 +++++++++++++++++++ docs/chantiers/acte-certification/tableau.md | 7 +- 2 files changed, 136 insertions(+), 2 deletions(-) create mode 100644 actes/2026-10-31-m2-vote.md diff --git a/actes/2026-10-31-m2-vote.md b/actes/2026-10-31-m2-vote.md new file mode 100644 index 0000000..5108f02 --- /dev/null +++ b/actes/2026-10-31-m2-vote.md @@ -0,0 +1,131 @@ +# Acte — Mise en ligne M2 + M3a (le vote déplié et groupé, l'inertie à cinq crans) +Classe : déploie +Projet : libreDecision Date : 2026-10-31 +**État : FIGÉ (2026-10-31, 01 h 30)** sur `74f96be` — relectures « a576b68 : ok », « 71819f9 : ok », +« 74f96be : ok » inscrites + +## Intention + +Mettre en ligne en une fois les points L9 et L10 de la revue d'Yvv du 30/10 : +- L10 (lot C, déjà relu, dossier M3a) : l'inertie à cinq crans, l'échelle calée sur la + participation, les réglages de la formule ; +- L9 (lot B) : + - le vote qui se déplie sous l'article, avec ton vote, les totaux et la distance au seuil ; + - le vote groupé (document, section, article) dans un panier ; + - le vote par transaction Ğ1, livré **éteint**. + +**Le vote par la chaîne reste éteint** : `LD_VOTE_ACCOUNT` n'est pas posé. La relecture de +`74f96be` a relevé trois défauts à corriger avant de l'ouvrir (lot B2, en cours), et Yvv doit +encore trancher le secret du vote, l'extension et le compte de vote. Dans Monnaie libre, +l'écran dit pourquoi on ne peut pas encore voter. Dans le groupe d'essai, le vote marche côté +serveur, déplié et groupé. + +Si cet acte est armé, il **remplace** le dossier M3a (`actes/2026-10-30-m3-inertie-cinq-crans.md`), +qui n'aura plus d'objet. Tout ce que M3a écrit en base est repris ici. + +## Ce qui part + +Version : `74f96be`, qui contient la version en production `8727315`. En plus de M3a +(`8727315..71819f9`, voir son dossier) : +- lot B : `3541e1b` (le vote par la chaîne, moteur et serveur), `b260596` (le vote déplié, le + panier, la signature), `ef27165` (« Voter en lot »), `032fcbb` (ADR 0008, contrôles C21–C24) ; +- la fusion `74f96be`. + +Ce qui change hors du code : `docker/app-compose.yml` reçoit **trois lignes de commentaire** (où +poser `LD_VOTE_ACCOUNT`), et rien d'autre (prémisse 4). Nouvelles dépendances : +- `polkadot-api` (67 Ko compressés, chargé seulement au moment de signer) ; +- `uqr` (4 Ko, le QR code) ; +- la crate `blake2`. + +## Ce que l'acte écrit dans la base de production (donnée runtime) + +- **Tout ce que dit le dossier M3a** : + - migration `0005` (crans, avec les anciens mots gardés) ; + - amendements gardés « E1 et E2 au cran 4 » ; + - mesure de participation dans `settings` ; + - republication de Monnaie libre. +- **La migration `0006`**, additive : + - tables `ballots` et `ballot_lines` ; + - quatre colonnes ajoutées à `votes` (`source`, `server` par défaut ; `block`, `event_index`, + `ballot_id`) ; + - aucun vote réécrit (il n'y en a aucun en production). +- **Répétition faite le 31/10 à 01 h 25**, avec le serveur de cette version, sur une copie + fraîche de la base de production (la santé disait `87273156`) : + - migrations 1 à 6 appliquées ; + - 4 « inertia amendment applied » ; + - 62 articles au cran 3, 4 au cran 4 ; + - 0 bulletin, 0 vote, une identité ; + - `integrity_check` ok, `foreign_key_check` vide. + +## Avant — prémisses vivantes + +1. La production sert `8727315` : `curl -s https://decision.librodrome.org/api/health` → + `"build":"87273156"`. Si elle sert `71819f9` (M3a déjà en ligne), l'acte reste valable : + seule la migration `0006` s'applique alors. +2. `git fetch prod && git fetch origin && git rev-parse --short prod/main && git rev-parse --short origin/main` + → la même version que la santé, deux fois. +3. Les relectures `a576b68`, `71819f9` et `74f96be` sont inscrites « ok » dans + `~/harness/etat/relectures.json`. Aucune autre relecture de ce code n'est en cours. +4. `git diff 8727315 74f96be -- docker/app-compose.yml .woodpecker/ .env data/` ne montre que + les trois lignes de commentaire sur `LD_VOTE_ACCOUNT` (vérifié le 31/10 à 01 h 30). Et sur sonic, + `grep -c LD_VOTE_ACCOUNT /opt/libredecision-app/secrets.env` → `0`, ou fichier absent : le + vote par la chaîne reste éteint (fichier absent le 31/10 à 01 h 30). +5. La boucle est verte sur `74f96be` : fait le 31/10 vers 0 h 15 (149 tests Rust, svelte-check + 0 avertissement, 32 vitest, e2e 25 / 25). L'image de production se construit (sortie 0). +6. Sur une copie fraîche de la base de production : + - `SELECT inertia, COUNT(*) FROM units GROUP BY 1` → `standard|66` (ou, si M3a est en + ligne, `3|62` et `4|4`) ; + - `SELECT COUNT(*) FROM votes` → `0` ; + - `SELECT COUNT(*) FROM adoptions WHERE kind = 'inertia'` → `0`. + +## Commandes exactes + +```sh +cd /home/yvv/Documents/PROD/DEV/libreDecision +git push prod 74f96be:main +git push origin 74f96be:main +git push origin chantier/acte-certification +``` + +## Effet attendu + +Les visiteurs voient : +- l'inertie en crans et les réglages de la formule ; +- « Le vote » qui se déplie sous l'article ; +- « Voter en lot » et « Voter cette section », et le panier ; +- dans Monnaie libre, la raison pour laquelle on ne vote pas encore. + +E1 et E2 passent au cran 4. Le dépôt des textes reçoit un `document.json` qui porte les crans. + +Irréversibilité : **partielle**. Le code se remet en arrière. Ce qui reste : +- les crans écrits en base, avec les mots d'origine à côté ; +- E1 et E2 au cran 4 ; +- les tables du vote, vides ; +- le commit publié dans le dépôt des textes. + +## Vérifications après + +- [ ] `curl -s https://decision.librodrome.org/api/health` → `"build":"74f96bec"`. +- [ ] `ssh sonic 'docker logs lpk-libredecision-app 2>&1 | grep -E "inertia amendment|participation measured|published|ballot"'` + → quatre « inertia amendment applied », les mesures, une publication, aucune erreur de + bulletin. +- [ ] À l'écran (Yvv) : + - Monnaie libre → Acte d'engagement → « Le vote » sous la Raison d'être se déplie, et dit + que le vote par la chaîne n'est pas encore ouvert ; + - les réglages de la formule montrent la référence de 100 votants ; + - dans le groupe d'essai, voter « Pour » sous un article marche, et le panier groupe une + section. + +## Retour + +- **Le code**, au plus court, sur sonic : `docker tag libredecision-app:previous libredecision-app:latest`, + puis `cd /opt/libredecision-app && docker compose up -d --force-recreate`. +- **Vers `71819f9`** : la relecture a montré qu'elle tolère la migration `0006` et continue + d'écrire ses votes. +- **Vers `8727315`** : pas de perte, mais l'affichage se dégrade. Ce sont les clés brutes + « inertia.3 », les propositions vers 5 lues « vers standard », d'adoption impossible. Voir le + dossier M3a. On n'y reste pas. +- **Les crans, E1 et E2 au cran 4, les tables du vote** : pas de retour automatique. Elles sont + additives, ou gardent l'ancien mot à côté. +- **Le commit publié** dans le dépôt des textes : on ne le retire pas sans réécrire l'historique + de ce dépôt, ce qui serait un acte « supprime ». On publierait par-dessus. diff --git a/docs/chantiers/acte-certification/tableau.md b/docs/chantiers/acte-certification/tableau.md index dda0793..8b57580 100644 --- a/docs/chantiers/acte-certification/tableau.md +++ b/docs/chantiers/acte-certification/tableau.md @@ -38,7 +38,8 @@ chaîne (question stratégique, `docs/recherche/vote-g1-chaine.md`) ; l'affichag |---|---|---|---|---| | A | L1–L6 : entrée, DA, menu, listes, Décisions | high | **en ligne** 30/10 15 h 45 | `lot/a-entree` | | R | L7–L8 : Raison d'être (amendement de seed gardé), versions groupées | high | **en ligne** 30/10 15 h 45 | `lot/r-texte` | -| B | L9 : vote déplié, vote groupé, vote par transaction de 0,1 Ğ1 | xhigh | fusionné (`74f96be`), boucle verte, image construite ; relecture en cours | `lot/b-vote` | +| B | L9 : vote déplié, vote groupé, vote par transaction de 0,1 Ğ1 | xhigh | fusionné et relu (`74f96be`) ; acte M2 figé (vote par la chaîne éteint) | `lot/b-vote` | +| B2 | Corrections du vote avant de l'ouvrir (relecture de `74f96be`, points 2 à 8) | xhigh | lancé le 31/10 01 h 10 | `lot/b2-vote-sur` | | C | L10 : cinq crans, échelle, réglages | xhigh | fusionné et relu (`a576b68`, `71819f9`) ; acte M3a figé | `lot/c-inertie` | | D | L11 + titre du doc en module (4) + restes mineurs des relectures | high | lancé le 31/10 | `lot/d-modules` | | F | L12–L13 : objections, coquilles validées, messages, délai de 3 jours | xhigh | lancé le 31/10 | `lot/f-objections` | @@ -54,6 +55,7 @@ chaîne (question stratégique, `docs/recherche/vote-g1-chaine.md`) ; l'affichag | Q5 | Secret du vote (Q2) et transaction publique (Q1) : le commentaire porte le choix en clair, ou une empreinte scellée ? | défaut : empreinte scellée (la chaîne montre qui a voté et quand, pas quoi) | | Q6 | Ğ1Companion ne signe pas encore une transaction construite par une page : quelle extension pour le geste unique ? | défaut : duniter-connect maintenant (Ğ1Companion et trustinWallet se brancheront sur la même interface), lien et QR Ğecko sur mobile | | Q7 | Le compte qui reçoit les 0,1 Ğ1 : à qui, et que deviennent les sommes ? | défaut : un compte libreDecision créé par Yvv dans Ğecko, les sommes restent au collectif | +| Q8 | Le secret du vote tombe par recoupement : la chaîne montre qui vient de voter, et les totaux bougent aussitôt (relecture de `74f96be`) | à trancher avant d'ouvrir le vote ; pas de défaut posé | Défauts posés par orch, sans question (Yvv peut les corriger) : - Décisions : « modules restant à voter » = les modules du doc pas encore adoptés par un vote @@ -69,7 +71,8 @@ Défauts posés par orch, sans question (Yvv peut les corriger) : ## Actes - M1 : **exécuté** le 30/10/2026, 15 h 29 – 15 h 52 (`actes/2026-10-30-m1-mise-en-ligne.md`). -- M3a (L10) : **figé** sur `71819f9` (`actes/2026-10-30-m3-inertie-cinq-crans.md`), relectures inscrites, attend « déploie ». +- M3a (L10) : **figé** sur `71819f9` (`actes/2026-10-30-m3-inertie-cinq-crans.md`), attend « déploie ». +- M2 + M3a (L9 et L10) : **figé** sur `74f96be` (`actes/2026-10-31-m2-vote.md`), le vote par la chaîne éteint ; remplace M3a s'il est armé. Restes mineurs pour le lot D (relecture de `71819f9`, captures du lot B) : « seed a minima · 0 vote » affiché à côté des totaux ; pourcentage des réglages calculé sur le nombre arrondi ; liste explicite des statuts comptés dans la médiane ; affichage de la participation ramenée couvert par un e2e ; formulation « les seuils se calculent sur » (mettre le groupe en sujet) ; flèches du sélecteur de crans.