Files
decision/actes/2026-11-03-m6c-phrases-quorum.md
T

8.0 KiB
Raw Blame History

Acte — Mise en ligne M6c (trois phrases de F1.1, F1.2 et N1.1 écrites justes, lot T2)

Classe : déploie Projet : libreDecision Date : 2026-11-03 État : EN PRÉPARATION sur 84f015a (84f015ad58a2e87803dd1100d55f271f014339de) — 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 T2 : les trois phrases que la relecture de M6b (« bb4bdf5 : ok », 03/11) a laissées inexactes dans les textes du seed réécrits par le lot T, en ligne depuis le 03/11 à 08 h 02 ; et, dans l'interface, la même imprécision (« presque l'unanimité ») et un espace perdu (« 0 contredont 1 simulé »). Décision d'orch (dev-63, 03/11 à 08 h 07, puis 09 h 45) : T2 après U, un sous-agent à la fois.

  • F1.1 : « presque l'unanimité quand peu de gens votent » → « cette part est la plus haute au quorum et baisse quand la participation monte, jusqu'à la majorité M quand tout le monde vote ».
  • F1.2 : « tant que personne n'a voté sur l'article ; ensuite, il ne change plus » → « tant que l'article ne garde la trace d'aucun vote ». (Le défaut proposé, « compté », se trompait dans l'autre sens : un vote retiré sur la chaîne n'est plus compté, mais garde la trace et fige le quorum. Le choix reste à Yvv : textes-quorum-seed.md, point 8.)
  • N1.1 : « le groupe demande un quorum de votants, puis une part de « pour » » → « une part de « pour » parmi les votants […]. Chaque cran a aussi son quorum, qui n'est pas un nombre minimal de votants ».
  • Interface : inertia.explain, formula.reading, quorum.error.voted (fr, en, es) ; espaces perdus en tête d'un bloc Svelte (VoteFold, VersionDetails, menu).

Ce qui part

Version 84f015a, qui contient la version en ligne b2e597b. Code touché : crates/ld-server/src/seed_amend.rs (l'amendement), seeds/acte-engagement-certification.json (bases neuves), web/ (chaînes fr, en, es ; VoteFold.svelte, VersionDetails.svelte, +layout.svelte), des tests ; le reste est documentation. crates/ld-engine : des tests seulement. Configuration (docker/, .woodpecker/, .env, data/) et migrations : rien (prémisse 4).

Ce que l'acte écrit dans la base de production (donnée runtime)

  • Aucune migration.
  • Amendement de seed gardé 2026-11-03-f1-1-phrases, -f1-2-phrases, -n1-1-phrases, qui suit (follows) ceux de M6b, décidé une fois par document, dans une transaction, seulement si personne n'a touché l'article : 0 vote (simulé compris), 0 ligne de bulletin, aucune coquille, traduction de membre ni objection, texte d'avant identique à l'empreinte posée par M6b ; F1.1 admis à la révision 2, F1.2 et N1.1 à la révision 3, seulement si c'est l'amendement de M6b, et lui seul, qui l'a écrite.
    • proposals : texte fr, révision + 1 (F1.1 → 3 ; F1.2 et N1.1 → 4) ;
    • revisions : une ligne amendment ;
    • translations : en et es remplacés ;
    • seed_amendments : la décision ;
    • outbox : une ligne par article dans Monnaie libre, qui attend (publication suspendue) ; rien pour l'essai. Refus possibles, le texte d'avant reste : not_a_seed, voted_into_force, confirmed, votes, ballots, corrected, translation_edited, signalled, revised, text_differs.
  • Les amendements de M6b sont marqués dépassés : ils ne décident plus rien.
  • Aucun vote, aucune autre proposition, aucun autre article n'est touché ; la publication reste suspendue.

Répétition

Faite le 03/11 de 10 h 23 à 10 h 24, avec le serveur de 84f015a (binaire de la boucle, copié en m6c/ld-server-84f015a), sur une copie de la copie de production prise par orch à 10 h 23 min 10 (santé b2e597b6), publication vers un dépôt nu local (m6c/repetition.sh ; journal m6c/repetition-m6c.log, scratchpad de l'intégrateur). Deux démarrages.

Avant Après
F1.1 (deux groupes) ouverte, seed, révision 2, 0 vote, 0 bulletin révision 3
F1.2, N1.1 (deux groupes) ouvertes, seed, révision 3, 0 vote, 0 bulletin révision 4
Révisions 113 119
Traductions 144 144 (en, es des trois articles remplacés)
seed_amendments 16 22
File de publication (Monnaie libre) 7 en attente, 13 faites 10 en attente, 13 faites
Commits vers le dépôt des textes (local) — 0 (« publication suspended »)
Tout le reste (m6c/counts.sh : migrations 1–11, propositions, unités en vigueur, I1/E1/E2, inertia_changes, votes, bulletins, signalements, identités) identique

La base entière comparée (.dump) : changent exactement les 6 propositions de F1.1, F1.2, N1.1 (identifiants de la prémisse 2), leurs 12 traductions en et es, 6 révisions et 6 décisions ajoutées, 3 lignes de file ajoutées et les 7 lignes en attente reportées (next_at), les deux compteurs (sqlite_sequence : révisions 119, file 23). Rien d'autre. integrity_check ok, foreign_key_check vide. Journal : six « seed amendment applied » (2026-11-03-f1-1-phrases, -f1-2-phrases, -n1-1-phrases × essai, Monnaie libre), « publication suspended », aucune ligne ERROR ni WARN. Un second démarrage ne rejoue rien (comptes identiques, aucun « applied »).

Effet attendu

  • Dans les deux groupes, F1.1, F1.2 et N1.1 montrent les phrases corrigées, en fr, en et es ; la note d'inertie et la lecture de la formule de l'interface disent la même chose ; « 0 contre dont 1 simulé ».
  • Rien d'autre ne change ; le dépôt des textes reste à 9e0f45a.

Irréversibilité : partielle. Le code se remet en arrière ; les nouveaux textes restent (l'ancien est dans l'historique de chaque proposition).

Avant — prémisses vivantes

  1. La production sert b2e597b : santé "build":"b2e597b6" ; prod/main → b2e597b.
  2. Sur une copie fraîche, m6c/premisse.sh <db> (scratchpad de l'intégrateur, lecture seule) : 6 lignes, toutes open, origine seed, révision 2 pour F1.1 et 3 pour F1.2 et N1.1, votes, bulletins, coquilles et objections à 0 ; migration 11. Un article touché est refusé par l'amendement avec sa raison, et l'acte reste valable pour les autres. Lu par orch sur la copie de 10 h 23 min 10 (santé b2e597b6), puis par l'intégrateur sur sa copie de cette copie : l'attendu exact ; 0 vote et 0 ligne de bulletin en tout. À relire sur la copie fraîche juste avant la poussée.
  3. La relecture indépendante de 84f015a, inscrite « ok » dans ~/harness/etat/relectures.json.
  4. git diff b2e597b 84f015a -- docker/ .woodpecker/ .env data/ crates/ld-server/migrations/ → vide (vu par l'intégrateur à 10 h 22 et par orch à 10 h 23).
  5. Boucle verte sur 84f015a et image de production construite (à remplir).
  6. Sur sonic, aucun témoin /opt/libredecision-app/deploying.

Commande exacte

cd /home/yvv/Documents/PROD/DEV/libreDecision
git push prod 84f015ad58a2e87803dd1100d55f271f014339de:main

Vérifications après

  • Santé vue de l'extérieur → "build":"84f015ad".
  • Journaux : six « seed amendment applied » (2026-11-03-f1-1-phrases, -f1-2-phrases, -n1-1-phrases × essai, Monnaie libre), « publication suspended », aucune ligne ERROR ni WARN.
  • Redémarrage à froid : aucun amendement rejoué.
  • Sur une copie fraîche : F1.1 en révision 3, F1.2 et N1.1 en révision 4, dans les deux groupes ; le reste identique à la ligne près à la copie d'avant (comptes de counts.sh) ; integrity_check ok.
  • Le dépôt des textes reste à 9e0f45a.

Retour

  • Le code : docker tag libredecision-app:previous libredecision-app:latest, puis cd /opt/libredecision-app && docker compose up -d --force-recreate. previous sera b2e597b, qui attend aussi le premier texte pour publier : pas de coupure de la publication à faire.
  • Les textes : pas de retour automatique ; l'ancien texte reste dans l'historique de chaque proposition, un nouvel amendement gardé pourrait le remettre.

Exécution

(à remplir par orch)