Files
decision/actes/2026-11-02-m5-retenue-textes-regles.md
T

160 lines
8.4 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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.