Files
decision/docs/chantiers/acte-certification/M6-brouillon.md
T

6.0 KiB

Brouillon — acte M6 (Propositions seed, quorum, tampon des votes, lecteur, accueil, textes du quorum)

Brouillon, pas figé. Tenu par l'intégrateur libredecision-d4. Il passe sous actes/ quand il est figé sur un sha, avec sa relecture indépendante inscrite. Orch (dev-63) l'exécute sous son mandat (« déploie » et « pousse », du 03/11 au 08/11).

Intention

Mettre en ligne la revue d'Yvv du 02/11 et ses décisions du 02/11 et du 03/11 :

  • H : l'accueil sous la voûte (fusionné, a3c0a76) ;
  • S : les Propositions seed, la publication suspendue sans texte en vigueur, le quorum par cran, la licence AGPL-3.0-or-later (fusionné, 349c8ed) ;
  • V : le tampon des votes, le vote simulé partout tant que la chaîne est fermée (à fusionner) ;
  • T : les articles du seed qui décrivent le quorum (à faire) ;
  • U : le lecteur, la ligne « N oui pour passer · N non bloquent », le réglage du quorum (à faire).

Décisions d'Yvv que l'acte applique (registre)

  • Propositions seed au cran 2 ; aucun article en vigueur au départ (02/11).
  • Quorum par cran 12 · 12 · 50 · 50 · 50 dans Monnaie libre, 1 à l'essai ; l'auteur le change avant le premier vote (02/11) ; sous le quorum, les votants manquants comptent comme « non » (03/11).
  • Un vote simulé compte, puis s'efface à l'ouverture de la chaîne par un acte « supprime » (02/11).
  • Q11 (03/11, « Pas avant des votes prouvés ») : un texte entré en vigueur par des votes simulés est en vigueur sur le site, mais ne se publie pas ; la publication attend un texte passé par les seuls votes prouvés. Dans Monnaie libre, rien n'est publié avant l'ouverture de la chaîne.
  • Q12 (03/11, « Oui, retire-les ») : retirer les deux propositions d'inertie d'Yvv du 29/10, I1 → 5 et E1 → 5, avant que le nouveau serveur démarre (étape 0 ci-dessous).

Étape 0 — avant la poussée : retirer I1 → 5 et E1 → 5 sur la production actuelle

Pourquoi avant : l'amendement des Propositions seed (seed_proposal_amend.rs) tourne au démarrage et n'est décidé qu'une fois par document (l. 319-334, une ligne dans seed_proposal_amendments). Si une proposition d'inertie d'un membre est encore ouverte, il refuse le cran (inertia_proposal) pour de bon : I1 resterait au cran 3 et E1 au cran 4. Une proposition retirée sans vote ne compte plus (sa requête ne retient que status IN ('open','applied') ou une proposition votée).

La voie : le geste d'Yvv à l'écran, sur la version en ligne 3f10a0e. Vérifiée le 03/11 entre 05 h 50 et 05 h 56 sur un serveur local de 3f10a0e (base neuve du seed, proposition I1 → 5 créée comme en production ; captures dans le scratchpad de libredecision-d4, shots/3-row.png, 6-withdraw-visible.png, 7-after.png). Pas d'écriture SQL en production.

  1. Yvv, connecté, ouvre /g/monnaie-libre/docs/acte-engagement-certification.
  2. Il descend au bloc « Propositions en cours » et clique le filtre « Les miennes » : il ne reste que ses deux propositions d'inertie.
  3. Sous l'intertitre « INTRODUCTION » (I1) : la ligne « inertie vers 5 / 5 · très haute », « 0 pour · 0 contre », pastille « ta proposition ». Il clique la ligne.
  4. Le vote se déplie sous la ligne (l'adresse prend ?vote=<id>). Il clique « Coquilles, traductions, objections, historique ».
  5. Le panneau de droite s'ouvre sur « Détails » : « inertie vers 5 / 5 · très haute · proposé par Yvv ». Il clique « Retirer ma proposition ».
  6. Message « Proposition retirée. » ; la ligne disparaît des propositions en cours (en base : status = 'withdrawn', left_at posé ; la route relance un balayage, sans effet à 0 vote).
  7. Même chose pour E1, sous l'intertitre « ENGAGEMENTS FONDAMENTAUX » (déduit de la liste groupée par section ; non vu en local).

Vérification, sur une copie fraîche de la base de production : SELECT unit_id, status FROM proposals WHERE kind = 'inertia' → 2 withdrawn, 0 open.

Répétition : sur une copie fraîche, le retrait par la route avec le serveur 3f10a0e, puis le démarrage du serveur M6 sur cette copie → I1, E1, E2 au cran 2, et seed_proposal_amendments dit level_outcome = 'applied' pour les trois.

Si le retrait n'est pas fait, l'acte reste valable : I1 et E1 démarrent aux crans 3 et 4, E2 au cran 2, et le journal dit inertia_proposal.

Ce que l'acte écrit dans la base de production (à compléter)

  • Migrations 0009 (Propositions seed), 0010 (tampon des votes, lot V), 0011 (quorums), additives.
  • Amendement Propositions seed (2026-11-02-i1/e1/e2-proposition-seed), par document et par article : la version passe de en vigueur à ouverte et marquée ; units.in_force_id à NULL ; une ligne revisions de type seed_proposal ; le cran à 2 avec une ligne inertia_changes (si accepté) ; une ligne seed_proposal_amendments ; dans Monnaie libre une ligne outbox, qui attend (publication suspendue).
  • Amendement quorums (2026-11-03-quorums-par-cran) : documents.quorums là où il est NULL ; une ligne quorum_amendments ; une ligne outbox dans Monnaie libre.
  • Lot V : ce que 0010 et la première mise en route écrivent (à reprendre de son rapport).
  • Lot T : l'amendement des textes du quorum (à reprendre de son rapport).

Prémisses à vérifier (à compléter)

  • Sur une copie fraîche : les propositions qui ont déjà assez de voix pour leur nouveau seuil (9 au cran 2, 39 au cran 3) entreraient au premier balayage. Attendu : 0 vote en production (M5 : 0 vote, 1 identité).
  • La santé et prod/main sur 3f10a0e.
  • La relecture indépendante du sha figé, inscrite « ok » dans ~/harness/etat/relectures.json.
  • git diff 3f10a0e <sha> -- docker/ .woodpecker/ .env data/ : à lire.

Retour (à compléter)

  • Le code : libredecision-app:previous (3f10a0e). Le serveur tolère les migrations qu'il ne connaît pas (set_ignore_missing(true), lib.rs:100), mais les données auront changé : I1, E1, E2 ne sont plus en vigueur, et 3f10a0e les montrerait comme propositions ouvertes, sans la marque.