From 39d5cd26333077549ec466045038f5ccd39e50d3 Mon Sep 17 00:00:00 2001 From: Yvv Date: Tue, 3 Nov 2026 06:45:08 +0100 Subject: [PATCH] =?UTF-8?q?Acte=20M6=20:=20relecture=20=C2=AB=2094ddb17=20?= =?UTF-8?q?:=20ok=20=C2=BB=20inscrite=20;=20retour=20corrig=C3=A9=20(coupe?= =?UTF-8?q?r=20la=20publication=20avant,=20r=C3=A9p=C3=A9t=C3=A9),=20risqu?= =?UTF-8?q?e=20du=20retour=20automatique,=20lien=20d'=C3=A9quipe,=20acte?= =?UTF-8?q?=20=C2=AB=20supprime=20=C2=BB=20serveur=20arr=C3=AAt=C3=A9=20;?= =?UTF-8?q?=20tableau=20:=20liste=20d'attente=20de=20la=20relecture?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Documentation seule. Co-Authored-By: Claude Opus 5.5 --- ...1-03-m6-propositions-seed-quorum-tampon.md | 49 ++++++++++++++++--- docs/chantiers/acte-certification/tableau.md | 17 ++++++- 2 files changed, 59 insertions(+), 7 deletions(-) diff --git a/actes/2026-11-03-m6-propositions-seed-quorum-tampon.md b/actes/2026-11-03-m6-propositions-seed-quorum-tampon.md index 2cdd7e7..04dc98c 100644 --- a/actes/2026-11-03-m6-propositions-seed-quorum-tampon.md +++ b/actes/2026-11-03-m6-propositions-seed-quorum-tampon.md @@ -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 diff --git a/docs/chantiers/acte-certification/tableau.md b/docs/chantiers/acte-certification/tableau.md index a4ae0db..29dfa73 100644 --- a/docs/chantiers/acte-certification/tableau.md +++ b/docs/chantiers/acte-certification/tableau.md @@ -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) ;