Files
decision/actes/2026-10-30-m3-inertie-cinq-crans.md
T

7.3 KiB
Raw Blame History

Acte — Mise en ligne M3a (inertie à cinq crans, échelle calée sur la participation, réglages)

Classe : déploie Projet : libreDecision Date : 2026-10-30 État : FIGÉ (2026-10-30, 20 h 20) sur 71819f9 — relectures « a576b68 : ok » et « 71819f9 : ok » inscrites

Intention

Mettre en ligne le point L10 de la revue d'Yvv du 30/10 :

  • l'inertie à cinq crans : 3 par défaut, 4 pour Unicité du compte et Réciprocité ;
  • l'échelle calée sur la participation médiane du groupe (choix d'Yvv au formulaire) ;
  • l'inertie de l'inertie qui hérite du cran de l'article ;
  • les réglages de la formule, à portée de main.

Ce sont les règles sur lesquelles le vote (M2, lot B) va compter : mieux vaut qu'elles soient en place avant que les premiers votes arrivent. Le module d'ordre des sections (L11) et le titre du doc en module viendront avec le lot D.

Ce qui part

Version : 71819f9, qui contient la version en production 8727315. Commits emportés (git log --oneline 8727315..71819f9) :

  • lot C : d762301 (moteur, données, serveur), db64405 (interface), a57a1ff (ADR 0007, chantier, contrôles), 341df4d (mesure manquée au démarrage), 3bc60a1 (contrôles) ;
  • la fusion a576b68 ;
  • le correctif de relecture 71819f9 (les propositions retirées sortent de la médiane ; les réglages montrent la vraie participation) ;
  • des documents : l'acte M1 exécuté, HANDOFF, tableau, note vote-g1-chaine.md.

Aucune configuration ni aucun secret ne change (prémisse 4).

Ce que l'acte écrit dans la base de production (donnée runtime)

  • La migration 0005.
    • Elle ajoute units.inertia_legacy et proposals.inertia_target_legacy, et y recopie l'ancien mot de chaque ligne.
    • Elle réécrit units.inertia et proposals.inertia_target en crans : low → 2, standard → 3, high → 4, max → 5. Rien n'est perdu : le mot reste à côté.
    • Elle crée les tables inertia_changes et inertia_amendments.
    • Les adoptions passées ne sont pas touchées (testé).
  • Les amendements « 2026-10-30-e1-inertie-4 » et « …-e2-inertie-4 ».
    • Ils font passer E1 et E2 du cran 3 au cran 4, dans Monnaie libre et dans le groupe d'essai.
    • Ils ne s'appliquent que si l'article n'a jamais changé d'inertie par un vote, et si son cran est encore celui du seed. Une proposition d'inertie ouverte ne les arrête pas.
    • Chaque décision est consignée dans inertia_amendments, avec une ligne dans inertia_changes : l'article affiche « Passée de 3 à 4 le … : réglage de départ du texte ».
    • Ils mettent une republication en file, pour Monnaie libre seulement. Le document.json publié porte désormais l'inertie en nombre.
  • La mesure de participation de chaque groupe est gardée dans settings (participation:<groupe>). Sans votes, c'est la référence 2C/W, soit 100 votants pour Monnaie libre.
  • Répétition faite le 30/10 à 18 h 23, avec le serveur de a576b68, sur une copie fraîche de la base de production :
    • 62 articles au cran 3 et 4 au cran 4 (E1 et E2 des deux groupes), tous avec le mot standard gardé à côté ;
    • les deux propositions d'Yvv du 29/10 restent ouvertes, cible 5, mot max gardé ;
    • 0 adoption réécrite ;
    • la file contient « inertie de départ relevée : E1, 3 → 4 » et « … E2, 3 → 4 ».

Ce que voient les visiteurs

  • L'inertie en crans, de 1 à 5, avec un nom court (très basse, basse, moyenne, haute, très haute).
  • Les réglages de la formule : W, C, B, la participation habituelle, et le tableau des cinq crans.
  • Les seuils bougent un peu. Au cran 3, avec la référence de Monnaie libre, il faut 103 voix pour à 120 votants (au lieu de 105 en standard), et 1 265 à 2 000 votants (au lieu de 1 246). Le détail est dans l'ADR 0007.
  • Tes deux propositions d'inertie :
    • « Raison d'être → 5 » se vote au cran 3 : 103 voix pour à 120 votants, au lieu de 115 quand on votait au cran du dessus ;
    • « Unicité → 5 » se vote au cran 4 : 108 voix pour.

Avant — prémisses vivantes

  1. La production sert 8727315 : curl -s https://decision.librodrome.org/api/health → "build":"87273156".

  2. git fetch prod && git fetch origin && git rev-parse --short prod/main && git rev-parse --short origin/main → 8727315 deux fois.

  3. Les relectures a576b68 : ok et 71819f9 : ok sont inscrites dans ~/harness/etat/relectures.json, et aucune autre relecture de ce code n'est en cours.

  4. git diff --stat 8727315 71819f9 -- docker/app-compose.yml .woodpecker/ .env data/ → vide.

  5. La boucle est verte sur 71819f9 : fait le 30/10 vers 19 h (118 tests Rust, svelte-check 0 avertissement, 23 vitest, e2e 21 / 21). L'image de production de a576b68 se construit (sortie 0).

  6. Une copie fraîche de la base de production rend :

    • SELECT inertia, COUNT(*) FROM units GROUP BY 1 → standard|66 ;
    • SELECT COUNT(*) FROM adoptions WHERE kind = 'inertia' → 0 ;
    • deux propositions inertia ouvertes (I1 et E1, cible max, 0 vote).

    Toute autre valeur arrête l'acte, le temps de revoir la garde.

Commandes exactes

cd /home/yvv/Documents/PROD/DEV/libreDecision
git push prod 71819f9:main
git push origin 71819f9:main
git push origin chantier/acte-certification

Effet attendu

Les règles d'inertie à cinq crans, l'échelle et les réglages sont en ligne. E1 et E2 sont 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 le mot d'origine à côté ;
  • E1 et E2 au cran 4 ;
  • le commit publié dans le dépôt des textes.

Vérifications après

  • curl -s https://decision.librodrome.org/api/health → "build":"71819f90".
  • ssh sonic 'docker logs lpk-libredecision-app 2>&1 | grep -E "inertia amendment|participation measured|published"' → quatre « inertia amendment applied » (E1, E2 × essai, monnaie-libre), les mesures, une publication.
  • À l'écran (Yvv) : Monnaie libre → Acte d'engagement → « Réglages de la formule ». On y lit la référence de 100 votants et le tableau des cinq crans. Unicité et Réciprocité sont au cran 4, la Raison d'être au cran 3.

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. L'image précédente est 8727315.

  • Rejoué par la relecture : base de 8727315, montée en a576b68, puis ramenée. Aucune perte, aucune écriture ni adoption à tort. Mais l'affichage se dégrade :

    • la clé brute « inertia.3 » ou « inertia.4 » sur chaque ligne d'article ;
    • les propositions vers 5 se lisent « vers standard », et ne s'adoptent pas tant qu'on reste sur l'ancienne image ;
    • l'ancienne image laisse créer des propositions d'inertie en double, ou sans effet.

    On n'y reste donc pas : on revient vite sur une version corrigée.

  • Les crans en base : pas de retour automatique ; les mots d'origine restent dans les colonnes *_legacy.

  • E1 et E2 au cran 4 : pas de retour automatique. Il faudrait un amendement inverse, relu.

  • 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 (« supprime »). On publierait par-dessus.