# 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 : CADUC, emporté par M4** (constaté le 03/11/2026) : jamais exécuté ; `71819f9` est un ancêtre de `4d4adcc` (M4, en ligne depuis le 01/11 à 23 h 06) et de `3f10a0e` (M5, en ligne depuis le 02/11 à 03 h 04), son contenu est donc en production. Ne pas exécuter. État d'avant : **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:`). 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 ```sh 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.