Acte M4 figé sur 4d4adcc (relectures ok, retour arrière décrit) ; tableau : liste d'attente de la relecture

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
Yvv
2026-10-31 10:48:17 +01:00
co-authored by Claude Opus 5.5
parent 875a3541df
commit e16c0bd3e0
2 changed files with 37 additions and 14 deletions
+25 -8
View File
@@ -1,7 +1,8 @@
# Acte — Mise en ligne M4 (le vote, l'inertie à cinq crans, les modules d'ordre et de titre, les objections, les coquilles validées)
Classe : déploie
Projet : libreDecision Date : 2026-10-31
**État : PRÉPARÉ** sur `4d4adcc` — la relecture de `033b331+4d4adcc` est en cours ; on fige à son « ok »
**État : FIGÉ (2026-10-31, 10 h 47)** sur `4d4adcc` — relectures inscrites « ok » : `a576b68`, `71819f9`,
`74f96be`, `9c8f4cc`, `cd7e683`, `924a40d`, `033b331`, `4d4adcc`
## Intention
@@ -36,8 +37,8 @@ Version : `4d4adcc`, qui contient la version en production `8727315`. Lots et re
| B (vote) | `74f96be` | « ok » |
| B2 (corrections du vote) | `7ffa4fd` | « à reprendre », repris en `9c8f4cc` |
| F (objections, coquilles, messages) | `cd7e683` | « ok », avec `9c8f4cc` et `924a40d` |
| D (modules) et sa fusion | `033b331` | **en cours**, avec `4d4adcc` |
| Corrections M1–M4 de la relecture de F | `4d4adcc` | **en cours**, avec `033b331` |
| D (modules) et sa fusion | `033b331` | « ok », avec `4d4adcc` |
| Corrections M1–M4 de la relecture de F | `4d4adcc` | « ok », avec `033b331` |
Ce qui change hors du code (vérifié le 31/10 à 10 h 10) :
- `docker/app-compose.yml` reçoit **trois lignes de commentaire** (où poser `LD_VOTE_ACCOUNT`), et
@@ -104,10 +105,13 @@ Un second démarrage ne rejoue rien : mêmes comptes, journaux 4 / 2, file à 6.
avertissement, 55 vitest, e2e 35 / 35). L'image de production se construit :
`docker build -f docker/app.Dockerfile --target production .`, sortie 0 le 31/10 à 10 h 09 (tests
rejoués dans l'image : Rust verts, 55 vitest).
6. Sur une copie fraîche de la base de production :
6. Sur une copie fraîche de la base de production, **juste avant la poussée** :
- `SELECT group_concat(version) FROM _sqlx_migrations` → `1,2,3,4` (ou plus si M2 / M3a est en ligne) ;
- `SELECT COUNT(*) FROM votes` → `0` ;
- `SELECT COUNT(*) FROM signals` → `0`.
- `SELECT COUNT(*) FROM signals` → `0`. Cette prémisse compte : deux signalements debout d'une même
personne sur une même paire feraient échouer la migration 0008 (index `signals_one_standing`,
relecture de `033b331+4d4adcc`). Le serveur ne démarrerait pas, et Woodpecker relancerait
`8727315` sans aucun module, sans dégât.
## Commandes exactes
@@ -156,9 +160,22 @@ Irréversibilité : **partielle**. Le code se remet en arrière. Ce qui reste :
- **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`.
- **Une image plus ancienne sur la base migrée** : `open_db` tolère les migrations inconnues. Que
`8727315` lise correctement les unités `kind <> 'article'`, c'est à vérifier par la relecture en
cours ; le résultat sera écrit ici avant de figer.
- **Revenir à `8727315` une fois les modules créés abîme l'affichage et la publication** (relecture
de `033b331+4d4adcc`, prouvé sur une base faite par `8727315`). `open_db` tolère les migrations
inconnues, mais l'image ancienne lit toute la table `units` :
- le titre et les ordres apparaissent comme 9 faux articles par document (un titre au corps vide,
des listes d'identifiants), comptés « en vigueur » et « à voter » ;
- à son démarrage, elle republie Monnaie libre avec eux (`publish::resync`) ;
- elle lit les crans « 3 » et « 4 » comme `standard`, ce qui est sans effet tant qu'il n'y a aucun vote.
Ce retour peut aussi venir seul : l'étape `retablir` de `.woodpecker/app.yml` relance
`libredecision-app:previous` si la nouvelle version ne répond pas dans les 10 minutes.
**Conduite retenue par défaut** (Yvv peut la corriger) :
- on ne revient pas à la main vers `8727315` : on corrige en avant, par un nouveau déploiement ;
- si `retablir` joue, on laisse `8727315` servir le temps de corriger. La publication fausse ne
perd rien : elle part dans le dépôt des textes provisoire, et le déploiement suivant republie le bon
texte par-dessus. Le contexte : 1 identité et 0 vote en production.
- **Les crans, les modules, les tables nouvelles** : pas de retour automatique. Ils sont additifs, ou
gardent l'ancien mot à côté.
- **Les commits publiés** dans le dépôt des textes : on ne les retire pas sans réécrire l'historique
+12 -6
View File
@@ -9,9 +9,9 @@ Orch seul sur le dépôt (sous-agents en copies de travail). **M1 (L1–L8) en l
2026-10-30 à 15 h 45 (`8727315`, acte `actes/2026-10-30-m1-mise-en-ligne.md`) ; Raison d'être
publiée (commit `35864eb` du dépôt des textes). Sur `chantier/acte-certification` : tous les lots
fusionnés (B2, F, D), puis `4d4adcc` (mineurs de la relecture de F) ; boucle verte, e2e 35 / 35.
Relecture de `033b331+4d4adcc` en cours. Répétition sur une copie de la base de production faite
(10 h 02–10 h 06). Dossier M4 préparé (`actes/2026-10-31-m4-vote-modules-objections.md`), il
remplace M2 et M3a ; on le fige à l'« ok » de la relecture et quand l'image de production se construit.
Toutes les relectures « ok ». Répétition sur une copie de la base de production faite (10 h 02–10 h 06),
image de production construite (10 h 09). **Dossier M4 figé** (`actes/2026-10-31-m4-vote-modules-objections.md`),
il remplace M2 et M3a ; attend « déploie ».
## Critère de livraison (liste fermée)
@@ -43,8 +43,8 @@ chaîne (question stratégique, `docs/recherche/vote-g1-chaine.md`) ; l'affichag
| B | L9 : vote déplié, vote groupé, vote par transaction de 0,1 Ğ1 | xhigh | fusionné et relu (`74f96be`) ; acte M2 figé (vote par la chaîne éteint) | `lot/b-vote` |
| B2 | Corrections du vote avant de l'ouvrir (relecture de `74f96be`, points 2 à 8) | xhigh | fusionné (`7ffa4fd`) ; relu « à reprendre », repris en `9c8f4cc`, relu « ok » | `lot/b2-vote-sur` |
| C | L10 : cinq crans, échelle, réglages | xhigh | fusionné et relu (`a576b68`, `71819f9`) ; acte M3a figé | `lot/c-inertie` |
| D | L11 + titre du doc en module (4) + restes mineurs des relectures | high | fusionné (`033b331`), boucle verte ; en relecture | `lot/d-modules` |
| F | L12–L13 : objections, coquilles validées, messages, délai de 3 jours | xhigh | fusionné (`cd7e683`), relu « ok » ; mineurs repris en `4d4adcc` (en relecture) | `lot/f-objections` |
| D | L11 + titre du doc en module (4) + restes mineurs des relectures | high | fusionné (`033b331`), relu « ok » | `lot/d-modules` |
| F | L12–L13 : objections, coquilles validées, messages, délai de 3 jours | xhigh | fusionné (`cd7e683`), relu « ok » ; mineurs repris en `4d4adcc`, relu « ok » | `lot/f-objections` |
## Questions (réponse par défaut appliquée tant qu'Yvv n'a pas tranché)
@@ -75,10 +75,16 @@ Défauts posés par orch, sans question (Yvv peut les corriger) :
- M1 : **exécuté** le 30/10/2026, 15 h 29 – 15 h 52 (`actes/2026-10-30-m1-mise-en-ligne.md`).
- M3a (L10) : **figé** sur `71819f9` (`actes/2026-10-30-m3-inertie-cinq-crans.md`), attend « déploie ».
- M2 + M3a (L9 et L10) : **figé** sur `74f96be` (`actes/2026-10-31-m2-vote.md`), le vote par la chaîne éteint ; remplace M3a s'il est armé.
- M4 (L9 à L13) : **préparé** sur `4d4adcc` (`actes/2026-10-31-m4-vote-modules-objections.md`), le vote par la chaîne éteint ; remplace M2 et M3a.
- M4 (L9 à L13) : **figé** sur `4d4adcc` (`actes/2026-10-31-m4-vote-modules-objections.md`), le vote par la chaîne éteint ; remplace M2 et M3a ; attend « déploie ».
Restes mineurs de `71819f9` et du lot B : faits dans le lot D.
Liste d'attente (relecture de `033b331+4d4adcc`, après M4) :
- 0008 : lever les doublons debout avant de créer `signals_one_standing` (sans objet en production : 0 signalement) ;
- un ordre ne départage pas deux articles à la même position (deux créations simultanées) ;
- `place_at_end` coupe toujours le même intervalle : au 52e ajout dans une section, les positions se confondent ;
- `publish.rs` : articles sur `tally`, modules sur `shown_tally` (identiques aujourd'hui).
À dire à Yvv : dans le groupe d'essai (C = 1), dès 16 membres une voix seule fait passer un texte,
la garde B^W passant sous la précision du calcul (ADR 0007). Monnaie libre (C = 50) n'est pas
concernée. Pour deux voix dans l'essai quel que soit W : C = 2.