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

140 lines
7.6 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 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:<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
```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.