Acte M6 : relecture « 94ddb17 : ok » inscrite ; retour corrigé (couper la publication avant, répété), risque du retour automatique, lien d'équipe, acte « supprime » serveur arrêté ; tableau : liste d'attente de la relecture

Documentation seule.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
Yvv
2026-11-03 06:45:08 +01:00
co-authored by Claude Opus 5.5
parent 5c9307bb9f
commit 39d5cd2633
2 changed files with 59 additions and 7 deletions
@@ -3,7 +3,7 @@ Classe : déploie
Projet : libreDecision Date : 2026-11-03
**État : FIGÉ** le 03/11/2026 à 06 h 22 sur `94ddb17` (`94ddb175643c8d523a083bbfee3882f22b82f628`) — préparé par
l'intégrateur libredecision-d4 ; exécuté par orch (dev-63) sous son mandat (« déploie » et « pousse », du
03/11 au 08/11). Relecture indépendante : en cours (voir la prémisse 4).
03/11 au 08/11). Relecture indépendante : « 94ddb17 : ok », inscrite le 03/11 à 06 h 42 (prémisse 4).
## Intention
@@ -92,6 +92,14 @@ ligne ERROR ni WARN. **Un second démarrage ne rejoue rien** (mêmes comptes, la
publication. Effet de « simule le vote à tout endroit » et « il compte, puis s'efface » ; orch le porte à
son rapport (03/11, 06 h 11). À l'ouverture de la chaîne, l'acte « supprime » (`ld-server
discard-simulation`, à blanc, puis `--apply`) écartera ces votes et réexaminera ce qu'ils ont fait entrer.
**Cet acte se jouera serveur arrêté** (relecture : `give_back` écrit sans garde, à côté du serveur).
- **Un lien d'équipe multiplie les voix simulées** (relecture, vu : un lien vers Monnaie libre ouvert
9 fois sous 9 noms donne 9 « pour », et I1 entre sur le site). En production le 03/11 à 06 h 11 :
aucun lien d'équipe ; 2 invitations vers Monnaie libre, dont 1 pas encore ouverte (expire le 05/11).
**À dire à Yvv** : ne pas créer de lien d'équipe vers Monnaie libre pendant la simulation, ou le
borner à quelques ouvertures.
- Après un vote simulé, le message bref dit encore « Vote enregistré. » et le panier « N votes
enregistrés. » ; sous l'article, c'est bien « simulé ». Repris par U (M7).
- L'accueil sous la voûte.
Irréversibilité : **partielle**. Le code se remet en arrière ; les données changées restent.
@@ -108,7 +116,15 @@ Irréversibilité : **partielle**. Le code se remet en arrière ; les données c
ces articles a bougé, l'amendement le refuse avec sa raison au journal, et l'acte reste valable.
3. Sur la même copie : 0 vote, donc aucune proposition n'entre au premier balayage.
4. La relecture indépendante de `94ddb17`, inscrite « ok » dans `~/harness/etat/relectures.json` ; aucune
autre relecture de ce code en cours.
autre relecture de ce code en cours. **Faite** : « 94ddb17 : ok », sous-agent neuf, rendue et inscrite le
03/11 à 06 h 42 (transcript `~/.claude/projects/-home-yvv-Documents-PROD-DEV-libreDecision/d0a7108b-7f2f-484a-bcb0-de339238199d/subagents/agent-ab9f269c254b56f31.jsonl`).
Aucun bloquant. Elle a rejoué la mise en route sur une base faite par `3f10a0e` (écritures exactement
celles annoncées, second démarrage sans rejeu, publication suspendue), sondé la formule sur 25 millions
de cas (une voix seule ne passe jamais, un « contre » n'aide jamais, `yesNeeded` / `noNeeded` exacts),
la route du quorum (bornes, CSRF, auteur, 409 après un vote), les routes de développement (404 sans
`LD_DEV_LOGIN`), la simulation et l'acte « supprime » (à blanc : la base inchangée). Ses constats « à
reprendre » sont traités dans ce dossier (le retour, le lien d'équipe, l'acte « supprime ») ou
renvoyés à U (« Vote enregistré. »).
5. `git diff 3f10a0e 94ddb17 -- docker/ .woodpecker/ .env data/` → vide (vérifié à 06 h 22).
6. Boucle verte sur `94ddb17` le 03/11 de 06 h 16 à 06 h 21 : fmt, clippy `-D warnings`, 286 tests Rust,
svelte-check 0 erreur 0 avertissement, 56 vitest, build, e2e 36 / 36. Image de production construite
@@ -160,13 +176,34 @@ git push prod 94ddb175643c8d523a083bbfee3882f22b82f628:main
## Retour
- **Le code** : `docker tag libredecision-app:previous libredecision-app:latest`, puis
`cd /opt/libredecision-app && docker compose up -d --force-recreate`. `previous` sera `3f10a0e`. Le
serveur tolère les migrations qu'il ne connaît pas (`set_ignore_missing(true)`, `lib.rs:100`).
**Avant tout retour vers `3f10a0e`, couper la publication.** `94ddb17` met 4 lignes en file au premier
démarrage (`seed_proposal_amend.rs:419`, `quorum_amend.rs:140`) ; `3f10a0e` ne connaît pas l'attente du
premier texte et publierait aussitôt un document **sans aucun article** (vu par la relecture : commit de
`fr.md`, `en.md`, `es.md` et `document.json` vides, 118 lignes retirées). Le compose prend
`${LD_PUBLISH_REMOTE:-…}` : une valeur vide reprend le défaut, il faut donc retirer la ligne.
```sh
ssh sonic
cd /opt/libredecision-app
cp docker-compose.yml docker-compose.yml.m6-avant-retour
sed -i '/LD_PUBLISH_REMOTE/d' docker-compose.yml
docker tag libredecision-app:previous libredecision-app:latest
docker compose up -d --force-recreate
```
- **Répété le 03/11 à 06 h 45** : le serveur de `3f10a0e`, sans `LD_PUBLISH_REMOTE`, sur la base issue de
la répétition M6 : démarrage sans erreur, aucune publication (dépôt nu local : 0 commit), la file reste
à 4 en attente. Le serveur tolère les migrations qu'il ne connaît pas (`set_ignore_missing(true)`,
`lib.rs:100`). La prochaine mise en ligne réécrit `docker-compose.yml` depuis le dépôt (`app.yml`).
- **Les données** : pas de retour automatique. `3f10a0e` montrerait I1, E1, E2 comme propositions
ouvertes sans la marque, et aucun article en vigueur ; les votes simulés éventuels y compteraient comme
des votes du serveur. Un retour du code au-delà de quelques minutes demande un acte de données à part.
- **La publication** : rien n'est parti, rien à retirer.
- **Risque connu, le retour automatique du pipeline** : si le nouveau conteneur échoue après avoir
démarré, `.woodpecker/app.yml` relance `previous` (`3f10a0e`) **avec** la publication, qui partirait
vide. La répétition et l'image ne montrent aucun échec de démarrage ; si le pipeline échoue quand même,
regarder aussitôt le dépôt des textes (`git ls-remote … main`) et, s'il a reçu le document vide, couper
la publication comme ci-dessus, puis republier le dernier état par-dessus (acte à part).
- **La publication** : en marche avant, rien ne part (suspendue).
## Exécution