From 0d087d2b81546beb3d4837155d0eeddcafd4200d Mon Sep 17 00:00:00 2001 From: Yvv Date: Tue, 3 Nov 2026 22:50:27 +0100 Subject: [PATCH] =?UTF-8?q?Dossier=20M9=20(pr=C3=A9par=C3=A9,=20non=20fig?= =?UTF-8?q?=C3=A9)=20:=20pour=20Yvv,=20chaque=20texte=20avant=20/=20apr?= =?UTF-8?q?=C3=A8s=20et=20ce=20qui=20sort=20;=20la=20r=C3=A9p=C3=A9tition?= =?UTF-8?q?=20sur=20la=20copie=20de=20production=20de=2022=20h=2041,=20r?= =?UTF-8?q?=C3=A9seau=20coup=C3=A9=20(aucune=20ligne=20supprim=C3=A9e,=20t?= =?UTF-8?q?able=20par=20table=20;=20second=20d=C3=A9marrage=20sans=20rejeu?= =?UTF-8?q?=20;=20retour=20sur=20de1b7eb=20rejou=C3=A9=20:=20les=20sept=20?= =?UTF-8?q?articles=20reviennent=20;=20nouveau=20passage=20sans=20rejeu)?= =?UTF-8?q?=20;=20la=20pr=C3=A9misse=20des=20traces=20lue=20=C3=A0=2022=20?= =?UTF-8?q?h=2050?= 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-m9-amorce-hors-vote.md | 219 ++++++++++++++++++++++++ 1 file changed, 219 insertions(+) create mode 100644 actes/2026-11-03-m9-amorce-hors-vote.md diff --git a/actes/2026-11-03-m9-amorce-hors-vote.md b/actes/2026-11-03-m9-amorce-hors-vote.md new file mode 100644 index 0000000..6299d40 --- /dev/null +++ b/actes/2026-11-03-m9-amorce-hors-vote.md @@ -0,0 +1,219 @@ +# Acte — Mise en ligne M9 (l'Acte d'engagement d'Yvv et les informations de fonctionnement hors vote, lots T4, U3 et U3b) + +**État : PRÉPARÉ, non figé** (en attente du lot U3b, de la boucle, de l'image et de la relecture +indépendante de ``) — 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). Mot : **« déploie »** (rien n'est effacé ; voir +« Ce que l'acte écrit »). + +## Pour Yvv : ce que tu liras de changé + +Dans les deux groupes (Monnaie libre et l'essai), en français ici ; en anglais et en espagnol dans +`docs/chantiers/acte-certification/textes-amorce.md`. Tous restent des **Propositions d'amorce** ouvertes, +0 vote, au cran 2 ; aucun article n'est en vigueur. + +**I1 « Raison d'être »** +- Avant : *« Derrière une clé il n'y a qu'un seul être humain vivant ; derrière un être humain, il n'y a + qu'une seule clé certifiante. »* / C'est le seul et unique propos de la certification, qui donne à notre + toile fiduciaire sa valeur. Nous pouvons nous fier à l'unicité et l'intégrité de tout geste signé par cette + clé. C'est l'enjeu de la certification. / Cet acte d'engagement est par ailleurs le seul acte de nature + contractuelle qui fonde l'usage de la première monnaie libre. +- Après : *« Derrière une clé il y a un et un seul être humain vivant ; derrière un être humain, il y a une + et une seule clé certifiante. »* / C'est l'unique enjeu de la certification et de votre engagement, il + donne à notre toile fiduciaire sa valeur : pouvoir nous fier à l'unicité et l'intégrité de tout geste signé + par cette clé. / Cet acte d'engagement est par ailleurs le seul acte de nature contractuelle, qui fonde + l'usage de la première monnaie libre. + +**E1 « Unicité du compte »** +- Avant : Je m'engage sur l'honneur à n'avoir et n'avoir jamais qu'un seul et unique compte cocréateur de + monnaie G1. +- Après : Je m'engage sur l'honneur à n'avoir et n'avoir jamais qu'un seul et unique compte certifiant. + +**E12 « Responsabilité civique »** (nouveau, entre E1 et E2) +- Je déclare sur l'honneur avoir la capacité légale et physique de signer un contrat et d'en assumer la + responsabilité civique, pour certifier à mon tour. + +**E2 « Réciprocité »** +- Avant : Je m'engage sur l'honneur à ne certifier que des personnes physiques qui respectent + scrupuleusement ces deux présents engagements fondamentaux. +- Après : Je m'engage sur l'honneur à ne certifier que des personnes physiques qui s'engagent elles-mêmes, à + scrupuleusement respecter ces trois principes fondamentaux. + +**Ce qui sort du document** (rien n'est effacé) : les sections « Formule de vote » (F1, F1.1, F1.2, F1.3), +« Inertie » (N1, N1.1) et « Ordonnancement » (O1), avec l'ordre de chacune. Elles ne se lisent plus, ne se +votent plus, ne se publient plus. Leurs informations sont maintenant dans l'interface, là où elles servent : +au vote déplié, dans le panneau « Réglages de la formule », sur la ligne d'ordre et au réglage du quorum. + +**Ce que tu verras à l'écran** +- En haut du document, avant le texte, l'encadré **« Info ouverture doc de réf. »**, hors vote : ton + paragraphe (« Aucun article n'est encore en vigueur. Les Propositions d'amorce y entrent par le vote… »), + l'inertie à l'ouverture (Propositions d'amorce 2 / 5, titre 4 / 5, ordre de chaque section 2 / 5, autres + articles 3 / 5) et le quorum (12 · 12 · 50 · 50 · 50 votants, du cran 1 au cran 5), lus dans le document. +- Un filet entre cet encadré et le texte ; plus les titres « Introduction » ni « Engagements fondamentaux ». +- « Proposition d'amorce » à la place de « Proposition seed ». +- Sans être connecté, l'accueil dit : « Pour rentrer dans un groupe de décisions, il faut pour l'instant + demander un lien d'invitation à Chiara ou à Yvv. Ce prototype n'est pas encore câblé sur la chaîne. » + +**Les choix faits pour toi** (appliqués ; dis lequel tu changes, il se change par un nouvel amendement tant +qu'aucun vote n'existe) : « il y a une et une seule clé » (« n'y a » lu comme une coquille, la seule +correction de tes mots) ; I1 en trois paragraphes, le premier en italique ; tes virgules gardées ; « ces +trois principes » = E1, E12, E2 ; E12 au cran 2 ; le chapitre titré comme tu l'as écrit ; « @ chiara » lu +« à Chiara » ; une fois un article en vigueur, la première phrase de ton paragraphe disparaît et « y entrent +par le vote » devient « entrent en vigueur par le vote ». + +## Intention + +Mettre en ligne la demande d'Yvv du 03/11, faite dans la session de l'intégrateur (vers 20 h 38, puis avant +20 h 44), mot pour mot dans `docs/chantiers/acte-certification/tableau.md` et +`textes-amorce.md` : les textes I1, E1, E2, l'article nouveau « Responsabilité civique » ; « ordonnancement, +inertie, et formule de vote sont des infos de fonctionnement […] Vire les 3 du bas de la liste » ; le +chapitre « Info ouverture doc de réf. » ; la séparation avant le texte ; les titres « Introduction » et +« Engagements fondamentaux » retirés ; le texte pour qui n'est pas invité. Un seul acte pour T4 et U3 (accord +d'orch le 03/11 à 21 h 58) : T4 seul retirerait les informations du document avant que l'interface ne les +dise. + +## Ce qui part + +Version `` (lots T4, U3, U3b), qui contient la version en ligne `de1b7eb`. +- **Serveur** : migration `0012_retired.sql` (additive) ; `retire.rs` (le retrait) ; `article_amend.rs` + (E12) ; `seed_amend.rs` (trois amendements, I1, E1, E2) ; les lectures, votes, propositions, objections, + coquilles, traductions, comptes et la publication ignorent une unité retirée ; `docs.rs` : `seedFeatured`. +- **Seed** (`seeds/acte-engagement-certification.json`, bases neuves) : les textes d'Yvv, E12, sans les + sections formule, inertie, ordonnancement. +- **Interface** (`web/`) : le chapitre, la séparation, les titres, les informations dans le vote et les + panneaux, « Proposition d'amorce », le texte pour qui n'est pas invité, le réordonnancement sur plusieurs + lignes, le tableau des crans lisible sur bureau. +- Configuration (`docker/`, `.woodpecker/`, `.env`, `data/`) : rien (prémisse 4). + +## Ce que l'acte écrit dans la base de production (donnée runtime) + +Au premier démarrage, dans une transaction par amendement et par document, une fois : +- **Migration 0012, additive** : deux colonnes vides `units.retired_at`, `units.retired_reason` ; deux tables + de journal `retirement_amendments`, `article_amendments`. Aucune colonne retirée, aucune ligne effacée. +- **`2026-11-03-i1-amorce`, `-e1-amorce`, `-e2-amorce`** (amendements de seed gardés, `Version::SeedProposal`) : + texte fr, révision + 1 (I1 → 3, E1 et E2 → 2), une ligne `revisions` `amendment`, en et es remplacés, la + décision dans `seed_amendments`, une ligne de file (Monnaie libre). Empreintes : I1 `a7095d70…` → + `32eb36b4…`, E1 `bdca2713…` → `df31d0ec…`, E2 `bde76a30…` → `a7dd4690…`. Refusé à la moindre trace d'une + personne (vote, simulé compris ; bulletin ; coquille ; traduction de membre ; objection ; texte différent de + l'empreinte) : le texte d'avant reste. +- **`2026-11-03-e12-responsabilite-civique`** (`article_amend.rs`) : une unité E12 (section + `fondamental`, position 4,5, entre E1 et E2 tant que l'ordre de la section n'a pas de vote, sinon en fin de + section), sa Proposition d'amorce ouverte (cran 2, `seed_featured`), sa révision initiale, en et es + (empreinte `3fa5a8e5…`), la décision dans `article_amendments`, une ligne de file (Monnaie libre). +- **`2026-11-03-fonctionnement-hors-vote`** (`retire.rs`) : `UPDATE units SET retired_at, retired_reason` + sur dix unités par document (F1, F1.1, F1.2, F1.3, N1, N1.1, O1, `ordre.formule`, `ordre.inertie`, + `ordre.ordonnancement`), **tous ou aucun**, seulement si aucune trace d'une personne n'existe sur elles + (raisons de refus : `votes`, `ballots`, `adopted`, `member_proposal`, `corrected`, + `translation_edited`, `signalled`, `quorum_set`, `changed`) ; la décision dans `retirement_amendments` ; + une ligne de file (Monnaie libre). Leurs propositions, révisions, traductions, changements d'inertie et + lignes de file restent. +- La file de publication : les lignes en attente sont reportées (`next_at`) ; la publication reste + suspendue (aucun texte en vigueur). Le groupe d'essai ne publie jamais. +- **Rien d'autre** : aucun vote, aucune identité, aucun réglage, aucun autre article. + +## Répétition + +**Faite le 03/11 de 22 h 45 min 39 à 22 h 47 min 46, réseau coupé** (`unshare -rn`, boucle locale seule : +`m9/repetition-isolee.sh`, scratchpad de l'intégrateur), avec le serveur construit sur `5730d78` (même code +serveur et même seed que `` : prémisse 4), copié en `m9/ld-server-a47aed0`, sur une copie de la copie +de production prise par orch de 22 h 41 min 52 à 22 h 42 min 10 (production sur `de1b7eb5` ; empreintes +vérifiées : `05058b76…`, `fd4c9fda…`, WAL vide), publication vers un dépôt nu local. Journal +`m9/repetition-1.log` ; comparaison ligne à ligne de chaque table par `m9/compare.py` (lecture seule, par +`rowid`). + +| Table | Avant | Après | Ce qui change | +|---|---|---|---| +| `_sqlx_migrations` | 11 | 12 | + la migration 12 | +| `units` | 84 | 86 | + E12 × 2 ; 20 unités marquées (`retired_at`, `retired_reason`) ; les 64 autres : deux colonnes nouvelles vides | +| `proposals` | 91 | 93 | + E12 × 2 (ouvertes, seed, `seed_featured`) ; I1, E1, E2 × 2 : `body`, `revision`, `updated_at` | +| `revisions` | 123 | 131 | + 6 `amendment` (I1, E1, E2 × 2), + 2 `initial` (E12 × 2) | +| `translations` | 144 | 148 | + 4 (E12 en, es × 2) ; 12 remplacées (I1, E1, E2 en, es × 2 : `body`, `source_hash`, `updated_at`) | +| `seed_amendments` | 26 | 32 | + 6 décisions `applied` | +| `article_amendments` | — | 2 | table nouvelle, 2 décisions `applied` (`between`, 4,5) | +| `retirement_amendments` | — | 2 | table nouvelle, 2 décisions `applied` | +| `outbox` | 25 (12 en attente) | 30 (17 en attente) | + 5 (Monnaie libre) ; les 12 en attente reportées (`next_at`) | +| Les 22 autres tables (votes 0, bulletins 0, identités 1, réglages, quorums, inertie, invitations, groupes, sessions…) | | | identiques | + +**Aucune ligne supprimée, dans aucune table.** `integrity_check` ok, `foreign_key_check` vide. Dans chaque +groupe, l'ordre de « fondamental » lu : T1, E1, E12, E2. Journal : six « seed amendment applied », deux +« article added … placement=Between(4.5) », deux « units out of the document … retired=[F1, F1.1, F1.2, +F1.3, N1, N1.1, O1, ordre.formule, ordre.inertie, ordre.ordonnancement] », « publication suspended … +waiting=17 », aucune ligne ERROR ; un seul WARN, attendu réseau coupé (« web of trust size: no node nor +indexer answered, keeping the last value »). Dépôt nu : 0 commit. + +**Ce qu'on lit ensuite** (connexion de développement sur une copie à part de l'état d'après) : dans chaque +groupe, 27 unités, cinq ordres de section (introduction, fondamental, technique, conclusion, annexe) ; I1, +E1, E12, E2 au cran 2, Propositions d'amorce (`seedProposal`, `seedFeatured`) ; ni F, ni N, ni O. + +**Un second démarrage ne rejoue rien** : toutes les tables identiques, seul le report de la file (`next_at`). + +**Le retour, rejoué** : le serveur de `de1b7eb` (`m8/ld-server-de1b7eb`, celui de la répétition de M8) sur +une copie de l'état d'après : démarre, santé ok ; il n'écrit rien d'autre que le report de la file ; il +montre, dans chaque groupe, **34 unités** : les sept articles F1 à O1 et les huit ordres de section +reviennent, avec les nouveaux textes d'I1, E1, E2 et E12 entre E1 et E2 (ce sont des données). **Un nouveau +passage** au serveur de `` ensuite ne rejoue rien (seul le report de la file) : les dix unités restent +retirées, puisque leur marque est restée. + +## Effet attendu + +- Dans les deux groupes : I1, E1, E2 aux textes d'Yvv, E12 entre E1 et E2, en fr, en, es ; ni formule, ni + inertie, ni ordonnancement dans le document ; l'encadré « Info ouverture doc de réf. » en tête. +- L'accueil sans session dit le texte pour qui n'est pas invité. +- La publication reste suspendue ; le dépôt des textes reste à `9e0f45a`. + +Irréversibilité : **partielle**. Le code se remet en arrière (`previous` = `de1b7eb`) et les sept articles +réapparaissent ; les nouveaux textes et E12 restent (l'ancien texte est dans l'historique de chaque +proposition) ; la migration 0012 reste (ignorée par `de1b7eb`, `set_ignore_missing`). + +## Avant — prémisses vivantes + +1. La production sert `de1b7eb` : santé `"build":"de1b7eb5"` ; `prod/main` → `de1b7eb`. +2. Sur une copie fraîche, `m8/counts.sh ` identique à la ligne près à la colonne « Avant » de la + répétition (migrations 1 à 11, integrity ok, identities 1, votes 0, revisions 123, translations 144, file + `pending=12 done=13`, `seed_amendments` 26) ; et `m9/traces.sh ` (scratchpad de l'intégrateur, + lecture seule) : pour I1, E1, E2 et les dix unités, dans les deux groupes, votes, bulletins, coquilles, + objections, traductions de membre et quorums fixés à 0 ; propositions de membre : seulement + `inertia/withdrawn` sur I1 et E1 dans Monnaie libre (les deux propositions d'inertie d'Yvv du 29/10, + retirées par lui le 03/11, Q12 ; la garde les admet) ; en vigueur : seuls les trois ordres (modules en + vigueur sans vote) ; en tout 0 vote, 0 bulletin, aucune E12, migration 11. **Lu par l'intégrateur le + 03/11 à 22 h 50** sur sa copie de la copie d'orch de 22 h 41 : l'attendu exact. Une trace fait refuser + l'amendement concerné avec sa raison, et rien ne bouge pour lui. +3. La relecture indépendante de ``, inscrite « ok » dans `~/harness/etat/relectures.json`. +4. `git diff de1b7eb -- docker/ .woodpecker/ .env data/` → vide ; sous + `crates/ld-server/migrations/`, le seul ajout `0012_retired.sql` ; `git diff 5730d78 -- crates/ + seeds/` → vide (la répétition vaut pour ``). +5. Boucle verte sur `` et image de production construite (à remplir). +6. Sur sonic, aucun témoin `/opt/libredecision-app/deploying`. + +## Commande exacte + +```sh +cd /home/yvv/Documents/PROD/DEV/libreDecision +git push prod :main +``` + +Puis la branche du chantier (orch, même mandat) : `git push origin chantier/acte-certification`. + +## Vérifications après + +- [ ] Santé vue de l'extérieur → `"build":""`. +- [ ] Journaux : six « seed amendment applied » (`2026-11-03-i1-amorce`, `-e1-amorce`, `-e2-amorce` × essai, + Monnaie libre), deux « article added … Between(4.5) », deux « units out of the document », + « publication suspended … waiting=17 », aucune ligne ERROR ni WARN. +- [ ] Redémarrage à froid : aucun amendement rejoué. +- [ ] Sur une copie fraîche : `m9/compare.py ` donne exactement la table de + la répétition, « AUCUNE LIGNE SUPPRIMÉE » ; `integrity_check` ok. +- [ ] Vue de l'extérieur, `https://decision.librodrome.org/` sans session : le texte pour qui n'est pas invité. +- [ ] 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 `de1b7eb`, qui ignore + la migration 0012 et la colonne : les sept articles et les trois ordres réapparaissent, rien d'effacé + (rejoué en répétition). Un nouveau passage à `` ne rejoue rien. +- **Les textes** : pas de retour automatique ; l'ancien texte reste dans l'historique de chaque proposition, + un nouvel amendement gardé pourrait le remettre. E12 reste (donnée). + +## Exécution + +(à remplir par orch)