160 lines
8.4 KiB
Markdown
160 lines
8.4 KiB
Markdown
# Acte — Mise en ligne M5 (une version retenue : « contre » et retrait ; les articles des règles réécrits ; la licence)
|
||
Classe : déploie
|
||
Projet : libreDecision Date : 2026-11-02
|
||
**État : EXÉCUTÉ** le 02/11/2026 — armé d'avance par Yvv (« Pousse. Déploie. », le 02/11, pour relire en ligne), relecture `0919b46+3f10a0e` « ok »
|
||
ligne) ; on exécute à l'« ok » de la relecture de `0919b46+3f10a0e`
|
||
|
||
## Intention
|
||
|
||
Mettre en ligne ce qu'Yvv veut relire à l'écran : « Pour que je fasse une review, faut que je vois en
|
||
ligne » (02/11). Trois choses partent :
|
||
- **le lot G** : sur une version retenue par une objection, on peut voter « contre » ou retirer son
|
||
vote, jamais ajouter un « pour » (Yvv, 01/11) ;
|
||
- **les articles des règles** : F1.2, N1, N1.1 et O1 réécrits selon les règles appliquées (Yvv,
|
||
02/11). Ce sont des propositions ouvertes à 0 vote ; l'amendement de seed gardé remplace leur texte
|
||
et leurs traductions dans les deux groupes. Yvv les relit en ligne ;
|
||
- **la licence** AGPL-3.0 (`LICENSE`, champs des manifestes).
|
||
|
||
Le vote par la chaîne reste éteint : `LD_VOTE_ACCOUNT` n'est pas posé.
|
||
|
||
## Ce qui part
|
||
|
||
Version : `3f10a0e`, qui contient la version en ligne `4d4adcc` ; 13 commits, 41 fichiers. Hors du
|
||
code (vérifié le 02/11 à 02 h 03) : rien dans `docker/`, `.woodpecker/`, `.env` ou `data/`, et aucun
|
||
fichier sensible.
|
||
|
||
## Ce que l'acte écrit dans la base de production (donnée runtime)
|
||
|
||
- **Aucune migration.**
|
||
- **Quatre amendements de seed gardés**, décidés une fois par document et journalisés dans
|
||
`seed_amendments` (8 lignes). Chacun remplace le texte de la proposition ouverte `1.0.0` du seed
|
||
(révision 1 → 2, une ligne d'historique `amendment`) et ses traductions en, es. Seulement si
|
||
personne n'y a touché : 0 vote, révision 1, aucune coquille, traduction ni objection, et le texte
|
||
du seed du 21/10 (empreinte).
|
||
- **La republication de Monnaie libre** : 4 lignes en file ; rien pour le groupe d'essai.
|
||
- **Aucun article en vigueur, aucun vote, aucune autre proposition n'est touché.**
|
||
|
||
**Répétition faite le 02/11 de 01 h 58 à 02 h 01**, avec le serveur de `3f10a0e`, sur une copie fraîche
|
||
de la base de production (santé `4d4adcc2`), sans publication configurée.
|
||
|
||
| | Avant | Après |
|
||
|---|---|---|
|
||
| Migrations | 1–8 | 1–8 |
|
||
| Propositions | 90 | 90 |
|
||
| Les quatre, dans chaque groupe | révision 1, 0 vote, textes du 21/10 | révision 2, nouveaux textes |
|
||
| Autres propositions à une révision autre que 1 | I1 ×2 (Raison d'être, M1) | les mêmes |
|
||
| Révisions | 92 | 100 |
|
||
| Traductions | 144 | 144 (8 réécrites) |
|
||
| `seed_amendments` | 2 | 10, toutes « applied » |
|
||
| File de publication | 7 | 11 (4 pour Monnaie libre : « proposition de départ réécrite : … ») |
|
||
| Votes, signalements, identités | 0, 0, 1 | 0, 0, 1 |
|
||
|
||
`integrity_check` ok, `foreign_key_check` vide. Un second démarrage ne rejoue rien (10 / 100 / 11).
|
||
|
||
## Avant — prémisses vivantes
|
||
|
||
1. La production sert `4d4adcc` : `curl -s https://decision.librodrome.org/api/health` → `"build":"4d4adcc2"`.
|
||
2. `git fetch prod && git rev-parse --short prod/main` → `4d4adcc`.
|
||
3. La relecture `0919b46+3f10a0e` est inscrite « ok » dans `~/harness/etat/relectures.json`, ainsi
|
||
que celles de `4d4adcc` (M4) ; aucune autre relecture de ce code n'est en cours.
|
||
4. `git diff 4d4adcc 3f10a0e -- docker/ .woodpecker/ .env data/` → vide.
|
||
5. Boucle verte sur `3f10a0e` le 02/11 vers 01 h 50 : 237 tests Rust, svelte-check sans
|
||
avertissement, 55 vitest, e2e 35 / 35. Image de production construite le 02/11 à 02 h 02, sortie 0,
|
||
avec les tests rejoués dedans.
|
||
6. Sur une copie fraîche de la base de production : les quatre propositions `1.0.0` du seed
|
||
(F1.2, N1, N1.1, O1) sont à la révision 1 et à 0 vote dans les deux groupes. Si l'une a bougé,
|
||
l'amendement la laisse telle quelle, la refuse avec sa raison au journal, et l'acte reste valable.
|
||
|
||
## Commande exacte
|
||
|
||
Selon la règle du canon du 02/11, un dossier « déploie » ne liste que la poussée qui met en ligne :
|
||
|
||
```sh
|
||
cd /home/yvv/Documents/PROD/DEV/libreDecision
|
||
git push prod 3f10a0e:main
|
||
```
|
||
|
||
## Effet attendu
|
||
|
||
- Dans les deux groupes, F1.2, N1, N1.1 et O1 montrent les nouveaux textes, en fr, en et es.
|
||
- Sur une version retenue par une objection, « Contre » et « Retirer mon vote » ; jamais « Pour ».
|
||
- Le dépôt des textes reçoit une publication de Monnaie libre.
|
||
|
||
Irréversibilité : **partielle**. Le code se remet en arrière. Ce qui reste :
|
||
- les nouveaux textes des quatre propositions, à la révision 2, l'ancien texte étant gardé dans
|
||
l'historique ;
|
||
- le commit publié.
|
||
|
||
## Vérifications après
|
||
|
||
- [ ] Santé → `"build":"3f10a0e…"`, les huit premiers caractères.
|
||
- [ ] `ssh sonic 'docker logs lpk-libredecision-app 2>&1 | grep -E "seed amendment|published|ERROR|WARN"'`
|
||
→ huit « seed amendment applied », une publication, aucune erreur.
|
||
- [ ] Redémarrage à froid (`docker compose restart`), puis santé vue de l'extérieur et journaux : aucun
|
||
amendement rejoué. L'image n'a ni `wget` ni `curl` : la santé se lit depuis le poste.
|
||
- [ ] Sur une copie fraîche : les comptes de la répétition, à la ligne près.
|
||
- [ ] À l'écran (Yvv) : Monnaie libre → Acte d'engagement → « Propositions en cours » : Paramètres par
|
||
défaut, Réglage de l'inertie, Niveaux d'inertie, Ordonnancement du document.
|
||
|
||
## Retour
|
||
|
||
- **Le code** : `docker tag libredecision-app:previous libredecision-app:latest`, puis
|
||
`cd /opt/libredecision-app && docker compose up -d --force-recreate`. `previous` sera alors `4d4adcc`,
|
||
qui lit les modules ; le risque d'un retour vers `8727315`, décrit dans l'acte M4, ne se pose plus.
|
||
- **Les quatre textes** : pas de retour automatique. L'ancien texte reste dans l'historique de chaque
|
||
proposition ; un nouvel amendement gardé pourrait le remettre.
|
||
- **Le commit publié** : on publierait par-dessus.
|
||
|
||
## Exécution
|
||
|
||
Acte exécuté le 02/11/2026, 02h53-03h10, par orch (session libreDecision).
|
||
- **Armement** : par Yvv dans cette session, d'avance (« Pousse. Déploie. »). Il voulait relire en
|
||
ligne : « Pour que je fasse une review, faut que je vois en ligne ».
|
||
- **Relecture** : « 0919b46+3f10a0e : ok », inscrite à 02 h 53, sans bloquant.
|
||
|
||
Prémisses revérifiées à 02 h 53 :
|
||
1. santé `4d4adcc2` ;
|
||
2. `prod/main` = `4d4adcc` ;
|
||
3. relectures inscrites ;
|
||
4. aucune configuration changée ;
|
||
5. boucle et image du 02/11 vers 02 h ;
|
||
6. sur une copie fraîche, les quatre propositions `1.0.0` à la révision 1 et à 0 vote dans les deux
|
||
groupes. La copie a été retirée.
|
||
|
||
Mise en ligne :
|
||
- 02 h 58 : `git push prod 3f10a0e:main` → `4d4adcc..3f10a0e 3f10a0e -> main` ;
|
||
- la santé répondait `4d4adcc2`, puis n'a pas répondu à la sonde de 03 h 00 min 32, pendant la
|
||
bascule ; à 03 h 04 min 15 : `{"build":"3f10a0e8","ok":true}`.
|
||
|
||
Journaux du démarrage (02 h 04 UTC) :
|
||
- huit lignes « seed amendment applied » (F1.2, N1, N1.1, O1 × essai, Monnaie libre) ;
|
||
- `published … commit="unchanged"` : la publication ne rend que les textes en vigueur, comme l'avait
|
||
annoncé la relecture ;
|
||
- aucune ligne ERROR ni WARN.
|
||
|
||
Image de retour : `libredecision-app:previous`, construite le 01/11 à 23 h 05 (`4d4adcc`).
|
||
|
||
Redémarrage à froid (03 h 07) :
|
||
- santé `3f10a0e8` vue de l'extérieur, `RestartCount` 0 ;
|
||
- aucun amendement rejoué ;
|
||
- la reprise a publié un commit `17c4db2`, qui ne change qu'une ligne de `document.json` :
|
||
`"electorate": 5708` → `5707`, le nombre de membres relu sur la chaîne. C'est le fonctionnement
|
||
prévu, sans rapport avec cet acte.
|
||
|
||
Invariants sur une copie fraîche, identiques à la répétition :
|
||
- migrations `1,…,8` ;
|
||
- 90 propositions ; les quatre à la révision 2 dans les deux groupes ; les seules autres révisées
|
||
sont I1 ×2 ;
|
||
- 100 révisions, 144 traductions, 0 vote, 0 signalement, 1 identité ;
|
||
- `seed_amendments` : 10 lignes, toutes « applied » ;
|
||
- `integrity_check` ok, `foreign_key_check` vide.
|
||
|
||
Retirés, parce qu'ils portaient des données réelles : la copie de la prémisse 6, la copie d'après et
|
||
la répétition `/tmp/ld-repetition-m5`. Image de contrôle et journal de construction retirés le 02/11
|
||
à 02 h 03.
|
||
|
||
À reprendre au prochain tour, avec la relecture d'Yvv en ligne :
|
||
- dans N1.1, G se calcule sur p̃ rapporté à W, pas sur un nombre de votants ;
|
||
- un second amendement d'un texte déjà amendé demande d'étendre la garde : la révision 2 et
|
||
l'historique initial puis amendement doivent être admis.
|