Dossier d'acte M2 + M3a figé sur 74f96be (vote par la chaîne éteint) ; tableau : B relu, B2 lancé, Q8

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
Yvv
2026-10-31 01:16:44 +01:00
co-authored by Claude Opus 5.5
parent 1a35d0f521
commit c3a3c6923f
2 changed files with 136 additions and 2 deletions
+131
View File
@@ -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.