forked from yvv/decision
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:
@@ -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.
|
||||
Reference in New Issue
Block a user