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

8.4 KiB
Raw Blame History

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 :

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.