From d56b978af454b193f114016e734cfc6d727479f5 Mon Sep 17 00:00:00 2001 From: Yvv Date: Tue, 3 Nov 2026 11:51:31 +0100 Subject: [PATCH] =?UTF-8?q?Acte=20M7b=20(lot=20U2,=20les=20mineurs=20du=20?= =?UTF-8?q?lecteur)=20en=20pr=C3=A9paration=20sur=206f6197c=20:=20r=C3=A9p?= =?UTF-8?q?=C3=A9tition=20sur=20une=20copie=20de=20la=20production=20de=20?= =?UTF-8?q?11=20h=2040=20(0=20=C3=A9criture),=20recette=20=C3=A9cran=20des?= =?UTF-8?q?=20points=20visibles=20(bureau,=20t=C3=A9l=C3=A9phone,=20membre?= =?UTF-8?q?,=20administrateur),=20boucle=20et=20image?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Claude Opus 5.5 --- actes/2026-11-03-m7b-lecteur-mineurs.md | 124 ++++++++++++++++++++++++ 1 file changed, 124 insertions(+) create mode 100644 actes/2026-11-03-m7b-lecteur-mineurs.md diff --git a/actes/2026-11-03-m7b-lecteur-mineurs.md b/actes/2026-11-03-m7b-lecteur-mineurs.md new file mode 100644 index 0000000..a997d74 --- /dev/null +++ b/actes/2026-11-03-m7b-lecteur-mineurs.md @@ -0,0 +1,124 @@ +# Acte — Mise en ligne M7b (les mineurs du lecteur, lot U2) +Classe : déploie +Projet : libreDecision Date : 2026-11-03 +**État : EN PRÉPARATION** sur `6f6197c` (`6f6197cc231837df55d6b3e1986f61be5d708a1f`) — 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 : à lancer. + +## Intention + +Mettre en ligne le lot U2 : les mineurs d'interface des relectures de M7 (`b2e597b`) et de M6c +(`84f015a`), défaut retenu par orch le 03/11 à 09 h 45 (U2 après T2). + +1. Cibles d'au moins 44 px sur téléphone : « Tout déplier », « Autres versions », « Fixer ce quorum », et + tous les gestes du vote déplié et du réordonnancement. +2. Les trois lectures (« En vigueur », « Si les bien cotées passent », « Si tout passe ») passent à la + ligne sur téléphone au lieu de cacher « Si tout passe ». +3. « Proposer cet ordre » éteint dit pourquoi : « C'est l'ordre en vigueur : déplace au moins un + article. » +4. Une information à un seul endroit dans le vote déplié : l'inertie dite une fois (ses crans dans + « Inertie ») ; la ligne d'une Proposition seed s'efface sous son vote déplié ; l'autre version d'un + article n'est plus redite dans « Autres versions ». +5. L'en-tête compte ce que montre la liste : « 0 article en vigueur · 3 Propositions seed · 32 + propositions en cours ». +6. Un changement d'inertie proposé sur un ordre ou sur le titre a sa pastille sur la ligne du module. +7. `settings.reading` dit « au-delà du quorum » (fr, en, es) ; l'anglais en un seul vocabulaire (« for », + « against », « favour ») ; le commentaire de `crates/ld-engine/src/threshold.rs` écrit juste, et un test. + +## Ce qui part + +Version `6f6197c`, qui contient la version en ligne `84f015a`. **L'interface**, plus un commentaire et un +test dans `crates/ld-engine` ; le reste est documentation (`CONTROLES.md`, `UX-lecteur.md`, `CLAUDE.md`, +actes, tableau, HANDOFF). `git diff 84f015a 6f6197c -- crates/ld-server crates/trustin-access seeds docker +.woodpecker .env data` → **vide** (vu par l'intégrateur à 11 h 39 et par orch à 11 h 40) : le serveur est +celui qui est en ligne. + +## Ce que l'acte écrit dans la base de production (donnée runtime) + +**Rien.** Aucune migration, aucun amendement, aucun code serveur nouveau. Au démarrage, comme à chaque +démarrage depuis M6, la file de publication suspendue reporte ses lignes en attente (`next_at`). + +## Répétition + +**Faite le 03/11 de 11 h 43 à 11 h 44**, avec le serveur de `6f6197c` (binaire de la boucle, copié en +`m7b/ld-server-6f6197c`), sur une copie de la copie de production prise par orch à 11 h 40 min 27 (santé +`84f015ad`), publication vers un dépôt nu local (`m7b/repetition.sh` ; journal `m7b/repetition-m7b.log`, +scratchpad de l'intégrateur). Deux démarrages. + +- `m7b/counts.sh` avant et après le second démarrage : **identiques**. +- **La base entière comparée** (`.dump`) : seules changent les 10 lignes de la file en attente, par leur + `next_at`. +- Journal : « publication suspended », aucun amendement, aucune ligne ERROR ni WARN ; 0 commit vers le + dépôt des textes. + +## Recette écran + +**Faite le 03/11 de 11 h 45 à 11 h 50**, sur d'autres copies de la copie de 11 h 40, interface de +`6f6197c`, connexion de développement (identités `dev:` dans ces copies seulement), bureau 1360 × 900 et +téléphone (Pixel 7), `fr-FR`, vue membre et vue administrateur. Scripts `m7b/recette.mjs` et +`m7b/probe.mjs` ; rapport `m7b/shots/rapport.json` ; captures dans +`/tmp/claude-1001/-home-yvv-Documents-PROD-DEV-libreDecision/d0a7108b-7f2f-484a-bcb0-de339238199d/scratchpad/m7b/shots/`, +regardées. + +| Point | Mesuré sur les données de production | Captures | +|---|---|---| +| 1 | Téléphone : « Tout déplier » 44 px ; dans le vote déplié, Pour, Contre, « Réglages de la formule », « Coquilles… » 44 px ; « Proposer cet ordre » 44 px ; administrateur : « Fixer ce quorum » 44 px, le champ 44 px. (Bureau : 36 à 39 px, la règle vaut pour le téléphone.) | `telephone-1c-admin-quorum`, `telephone-4b-deux-versions`, `telephone-3-ordre-inchange` | +| 2 | Téléphone : la rangée des lectures tient (370 px de contenu pour 370 visibles ; avant M7b, 412 pour 370), « Si tout passe » entier sur sa ligne ; la page ne déborde pas. | `telephone-5-entete` | +| 3 | « Proposer cet ordre » éteint, et la phrase « C'est l'ordre en vigueur : déplace au moins un article. » visible (bureau et téléphone). | `*-3-ordre-inchange` | +| 4 | Vote déplié de Raison d'être : « Inertie · ▮▮▯▯▯ 2 / 5 · basse » une fois (l'autre « 2 / 5 » est la ligne d'historique) ; la ligne « 0 pour · 0 contre · 9 oui sur 12 » n'est plus redite au-dessus. Rencontre physique (deux variantes) : le vote de la variante 1.0.0 ne redit pas l'autre (0 « Autres versions », 0 mention de 0.4.0). | `*-4a-seed-deplie`, `*-4b-deux-versions` | +| 5 | « 0 article en vigueur · 3 Propositions seed · 32 propositions en cours » (avant : « 35 propositions en cours », ordres compris). | `*-5-entete` | +| 6 | Aucun changement d'inertie de module ouvert en production : prouvé par C38 sur une base de test, pas vu sur ces données. | — | + +Vu en passant, **pas du lot U2, déjà en ligne, en liste d'attente** : +- sur bureau, le bas du menu latéral (langues, ambiances, « Se déconnecter ») déborde au bord droit + quand le nom affiché est long (« Recette U2 bur… » : la quatrième pastille et « Se déconnecter » + coupés ; « Sonde bur… » : tout tient) ; +- sur téléphone, le sceau fixe chevauche « Réordonner » en bas à droite. +Aussi : la carte du document sur la page du groupe compte toujours le total du serveur (35, ordres +compris) ; changer ce compte toucherait le serveur (rapport de U2). + +## Effet attendu + +- Le lecteur change pour tout le monde sur ces sept points ; les données, les votes, les textes et la + publication ne changent pas. +- Le dépôt des textes reste à `9e0f45a`. + +Irréversibilité : **aucune** côté données ; le code se remet en arrière. + +## Avant — prémisses vivantes + +1. La production sert `84f015a` : santé `"build":"84f015ad"` ; `prod/main` → `84f015a`. +2. `git diff 84f015a 6f6197c -- crates/ld-server crates/trustin-access seeds docker .woodpecker .env data` → + vide. +3. La relecture indépendante de `6f6197c`, inscrite « ok » dans `~/harness/etat/relectures.json`. +4. Boucle verte sur `6f6197c`, le 03/11 de 11 h 39 à 11 h 43, du premier coup (journal `m7b/loop.log`) : + fmt, clippy `-D warnings`, 302 tests Rust, svelte-check 0 / 0, 78 vitest, build, e2e 42 / 42 (11 h 40 à + 11 h 43). Image de production construite de 11 h 43 à 11 h 45, sortie 0 (302 tests Rust « ok », + svelte-check 0 / 0, 78 vitest, build) ; image de contrôle retirée à 11 h 50. +5. Sur sonic, aucun témoin `/opt/libredecision-app/deploying`. + +## Commande exacte + +```sh +cd /home/yvv/Documents/PROD/DEV/libreDecision +git push prod 6f6197cc231837df55d6b3e1986f61be5d708a1f:main +``` + +## Vérifications après + +- [ ] Santé vue de l'extérieur → `"build":"6f6197cc"`. +- [ ] Journaux : « publication suspended … waiting=10 », aucune ligne ERROR ni WARN, aucun amendement. +- [ ] Le paquet JS servi, vu de l'extérieur, contient « déplace au moins un article » (la phrase de + « Proposer cet ordre » éteint) et « au-delà du quorum ». +- [ ] Sur une copie fraîche : comptes de `counts.sh` identiques à la copie d'avant ; `integrity_check` ok. +- [ ] Le dépôt des textes reste à `9e0f45a`. + +## Retour + +`docker tag libredecision-app:previous libredecision-app:latest`, puis +`cd /opt/libredecision-app && docker compose up -d --force-recreate`. `previous` sera `84f015a`, le même +serveur, qui attend aussi le premier texte pour publier : rien à couper, aucune donnée à reprendre. + +## Exécution + +(à remplir par orch)