forked from yvv/decision
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:
@@ -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
|
||||
|
||||
|
||||
@@ -168,10 +168,25 @@ Défauts posés par orch, sans question (Yvv peut les corriger) :
|
||||
- M2 + M3a (L9 et L10) : **caduc, emporté par M4** (`actes/2026-10-31-m2-vote.md`) : jamais exécuté, `74f96be` est en production depuis M4.
|
||||
- M4 (L9 à L13) : **exécuté** le 01/11/2026, 22 h 52 – 23 h 40 (`actes/2026-10-31-m4-vote-modules-objections.md`) ; M2 et M3a n'ont plus d'objet.
|
||||
- M5 (lot G, articles des règles, licence) : **exécuté** le 02/11/2026, 02 h 53 – 03 h 10 (`actes/2026-11-02-m5-retenue-textes-regles.md`).
|
||||
- M6 (H, S, V) : **figé** le 03/11 à 06 h 22 sur `94ddb17` (`actes/2026-11-03-m6-propositions-seed-quorum-tampon.md`) ; répétition faite sur une copie de la production de 06 h 11 ; relecture indépendante en cours ; exécuté par orch (dev-63) sous mandat.
|
||||
- M6 (H, S, V) : **figé** le 03/11 à 06 h 22 sur `94ddb17` (`actes/2026-11-03-m6-propositions-seed-quorum-tampon.md`) ; répétition faite sur une copie de la production de 06 h 11 ; relecture indépendante « 94ddb17 : ok » inscrite à 06 h 42 ; retour corrigé (couper `LD_PUBLISH_REMOTE` avant, répété) ; PRÊT envoyé à orch (dev-63), qui exécute sous mandat.
|
||||
|
||||
Restes mineurs de `71819f9` et du lot B : faits dans le lot D.
|
||||
|
||||
Liste d'attente (relecture de `94ddb17`, M6) :
|
||||
- **acte « supprime »** (ouverture de la chaîne) : le jouer serveur arrêté, ou ajouter des gardes
|
||||
`WHERE in_force_id = …` à `give_back` (`simulation.rs:200`, `:258-298`) ; `give_back` remet la version
|
||||
déplacée telle qu'elle est (révisée entre-temps, une révision non votée reviendrait) ; `confirm_seeds`
|
||||
(`adoption.rs:49`) : un module confirmé par des votes simulés le reste ; p̃ mesurée votes simulés
|
||||
compris jusqu'au lendemain de l'acte ;
|
||||
- **lien d'équipe** : il multiplie les voix simulées (jusqu'à 500 ouvertures) ; l'ADR 0012 l. 290 dit
|
||||
« deux voix » : à corriger ; à dire à Yvv ;
|
||||
- **U** : « Vote enregistré. » (`VoteFold.svelte:123`) et « N votes enregistrés. » (`BallotPanel.svelte:95`)
|
||||
après un vote simulé ; `fr.ts:263`, `:348` (et en, es) : « jusqu'à son effacement à l'ouverture de la
|
||||
chaîne » → c'est l'acte « supprime » qui efface ;
|
||||
- `document.json` comptera les votes simulés une fois la publication permise (l'ADR le dit) ;
|
||||
`simulation::unproven` recharge l'état du document à chaque affichage tant que la file attend
|
||||
(performance) ; `reached` / `missing` = 0 alors que la marge retient le rival (antérieur).
|
||||
|
||||
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) ;
|
||||
|
||||
Reference in New Issue
Block a user