Dossier d'acte M1 (préparé) et tableau : réponses d'Yvv, lots A et R fusionnés, C lancé

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
Yvv
2026-10-30 14:18:24 +01:00
co-authored by Claude Opus 5.5
parent 8727315612
commit 6bbc282cb1
2 changed files with 140 additions and 11 deletions
+126
View File
@@ -0,0 +1,126 @@
# Acte — Mise en ligne M1 (revue du 30/10 : entrée, DA, menu, listes, Raison d'être, versions)
Classe : déploie
Projet : libreDecision Date : 2026-10-30
**État : PRÉPARÉ** (relecture indépendante en cours ; le SHA est figé quand elle rend « ok »)
## Intention
Mettre en ligne sur decision.librodrome.org les points L1 à L8 de la revue d'Yvv du 30/10 (tableau
du chantier) :
- accueil qui ouvre directement sur le choix du groupe, avec le leitmotiv en trois lignes ;
- logo « Clé de voûte » et quatre ambiances ;
- page de groupe avec les quatre piliers et « En cours » ;
- menu avec le nombre de docs, les « À venir » des outils et Décisions, une ligne par doc ;
- « Raison d'être » à la place du Préambule ;
- une seule ligne par article dans la liste, même avec plusieurs versions.
Maintenant, parce que ces points ne dépendent d'aucune question ouverte, et qu'il vaut mieux
livrer petit (le vote, M2, viendra ensuite).
## Ce qui part
Version : `8727315` (branche `chantier/acte-certification`), qui contient la version en
production `dc2de09`. Commits emportés (`git log --oneline dc2de09..8727315`) :
- les fusions des lots R (`68115fb`) et A (`8727315`) ;
- lot R : `a5b92fa` (Raison d'être, amendement de seed gardé), `edc8811` (versions groupées),
`1503e57` (ordre stable des variantes), `c223c5c` (contrôles) ;
- lot A : `c640413` (Décisions et « À venir » côté serveur), `81b604e` (entrée, logo, ambiances,
menu, pages d'outil), `1e04336` (nom accessible du menu) ;
- documents : HANDOFF, tableau, note `docs/recherche/vote-g1-chaine.md`.
Aucune configuration ni aucun secret ne change : `docker/app-compose.yml` et `.woodpecker/`
sont identiques à ceux de `dc2de09` (prémisse 4).
## Ce que l'acte écrit dans la base de production (donnée runtime)
- La migration `0004` ajoute la table `seed_amendments`. Elle est additive : rien n'est
supprimé ni réécrit.
- L'amendement « 2026-10-30-i1-raison-d-etre » remplace le Préambule par la Raison d'être,
dans Monnaie libre et dans le groupe d'essai, **seulement si l'article est intact** :
- texte de départ, en vigueur sans vote, jamais confirmé ;
- révision 1, 0 vote, aucune correction ;
- aucune traduction écrite par un membre, aucun signalement ;
- texte identique au Préambule du seed.
Sinon, il ne touche à rien et journalise la raison. Il consigne chaque décision dans
`seed_amendments` et ajoute à l'historique de l'article la ligne « texte de départ remplacé »
avec son diff. Il met une republication en file, pour Monnaie libre seulement.
- État de la production lu le 2026-10-30 à 13 h 43, sur une copie de la base :
- le Préambule est intact dans les deux groupes : 0 vote, révision 1, traductions du seed,
aucun signalement ;
- il y a une identité (invitation) et aucun vote en tout ;
- deux propositions d'inertie ouvertes, d'Yvv le 29/10, n'en sont pas touchées.
- Répétition faite sur cette copie avec le serveur de `8727315` : démarrage sans erreur, puis
« seed amendment applied » pour l'essai et pour Monnaie libre. Le titre est devenu « Raison
d'être », en révision 2. La file d'envoi contient « texte de départ remplacé : I1 » pour
Monnaie libre seulement.
## Avant — prémisses vivantes
1. La production sert `dc2de09` :
`curl -s https://decision.librodrome.org/api/health` → `"build":"dc2de09…"`.
2. `prod/main` et `origin/main` sont à `dc2de09` :
`git fetch prod && git fetch origin && git rev-parse --short prod/main && git rev-parse --short origin/main`
→ `dc2de09` deux fois (vérifié le 2026-10-30 à 14 h, avec la santé `"build":"dc2de094"`).
3. La relecture de `8727315` est inscrite « ok » dans `~/harness/etat/relectures.json` ; et à
la question « une autre relecture de ce code est-elle en cours ? », la réponse est non.
4. Rien ne change la configuration :
`git diff --stat dc2de09 8727315 -- docker/app-compose.yml .woodpecker/ .env* data/` →
vide.
5. La boucle est verte sur `8727315` : fait le 2026-10-30 (91 tests Rust, svelte-check
0 avertissement, 16 vitest, e2e 20 / 20), et l'image de production se construit
(`docker build --target production`, sortie 0, `seeds/upcoming/` présent dans l'image).
## Commandes exactes
```sh
cd /home/yvv/Documents/PROD/DEV/libreDecision
git push prod 8727315:main
git push origin 8727315:main
git push origin chantier/acte-certification
```
Le pipeline Woodpecker (dépôt LPK/decision, `ci.open.us.org`) construit l'image (qui rejoue la
boucle), garde la version en service sous `libredecision-app:previous`, déploie, et revient
seul à la version précédente si le contrôle d'après déploiement échoue.
## Effet attendu
Les visiteurs de decision.librodrome.org voient la nouvelle entrée, le logo, les ambiances, le
menu, les pages d'outil, Décisions, la Raison d'être et les versions groupées. Le dépôt des
textes reçoit un commit : la Raison d'être en fr, en et es, dans
`monnaie-libre/acte-engagement-certification/`.
Irréversibilité : **partielle**. Le code se remet en arrière. Le remplacement du Préambule
reste en base, et le commit du dépôt des textes reste publié.
## Vérifications après
- [ ] `curl -s https://decision.librodrome.org/api/health` → `"build":"8727315…"`.
- [ ] `curl -s https://decision.librodrome.org/ | grep -c 'favicon'` ≥ 1, et la page répond
200.
- [ ] `ssh sonic 'docker logs lpk-libredecision-app 2>&1 | grep "seed amendment"'` → deux
lignes « applied » (essai, monnaie-libre).
- [ ] Dans `/acces` → Publication : « Dernière publication » datée du jour, sans envoi en
attente.
- [ ] À l'écran (Yvv) : l'accueil ouvre sur les groupes ; Monnaie libre montre les quatre
piliers et l'Acte d'engagement ; la Raison d'être ouvre le texte ; « Connaissance
suffisante » tient une ligne avec « 2 versions ».
## Retour
- **Le code** : pousser l'ancienne tête rejoue le pipeline avec la version précédente.
```sh
git push --force-with-lease=main:8727315 prod dc2de09:main
```
C'est une réécriture de branche : elle demande le mot « déploie » pour ce retour précis.
Plus rapide, sur sonic : `docker tag libredecision-app:previous libredecision-app:latest`,
puis `cd /opt/libredecision-app && docker compose up -d --force-recreate`.
L'ancienne version démarre sur la base migrée (la table ajoutée ne la gêne pas). Elle
affiche la clé brute « history.amendment » dans l'historique de I1, et y refuse toute
coquille, parce qu'elle la mesure contre le Préambule : c'est un refus, jamais une
écriture à tort.
- **La Raison d'être en base** : **pas de retour automatique**. Revenir au Préambule
demanderait un amendement inverse, écrit et relu comme celui-ci.
- **Le commit publié** dans le dépôt des textes : **IMPOSSIBLE à retirer sans réécrire
l'historique** de ce dépôt (geste « supprime »). On publierait par-dessus.
+14 -11
View File
@@ -6,8 +6,10 @@
## REPRISE
Orch seul sur le dépôt (projet à un dépôt : sous-agents en copies de travail, pas de sessions).
Lots A et R lancés le 2026-10-30 ; B, C, D, F attendent les réponses du formulaire (ou partent
avec les réponses par défaut ci-dessous). Rien n'est en ligne de cette revue.
A et R fusionnés (`8727315`), boucle verte, image construite, répétition sur une copie de la
base de production faite ; relecture indépendante en cours ; dossier `actes/2026-10-30-m1-mise-en-ligne.md`.
C lancé le 2026-10-30 à 13 h 30. B attend la recherche sur Ğ1Companion et une question (secret
du vote et transaction publique). D après C, F après B. Rien n'est en ligne de cette revue.
## Critère de livraison (liste fermée)
@@ -34,21 +36,22 @@ chaîne (question stratégique, `docs/recherche/vote-g1-chaine.md`) ; l'affichag
| Lot | Contenu | Effort | État | Branche |
|---|---|---|---|---|
| A | L1–L6 : entrée, DA, menu, listes, Décisions | high | lancé 2026-10-30 | `lot/a-entree` |
| R | L7–L8 : Raison d'être (seed + migration gardée), versions groupées | high | lancé 2026-10-30 | `lot/r-texte` |
| B | L9 : vote déplié, vote groupé, voie du vote Ğ1 | xhigh | attend Q1, Q2 | — |
| C | L10 : cinq crans, échelle, réglages | xhigh | attend Q3 | — |
| A | L1–L6 : entrée, DA, menu, listes, Décisions | high | fusionné (`8727315`) | `lot/a-entree` |
| R | L7–L8 : Raison d'être (amendement de seed gardé), versions groupées | high | fusionné (`68115fb`) | `lot/r-texte` |
| B | L9 : vote déplié, vote groupé, vote par transaction de 0,1 Ğ1 | xhigh | recherche Ğ1Companion en cours ; question Q5 | — |
| C | L10 : cinq crans, échelle, réglages | xhigh | lancé 2026-10-30 13 h 30 | `lot/c-inertie` |
| D | L11 (+ titre du doc en module, Q4) | high | après C | — |
| F | L12–L13 : objections, coquilles validées, messages, délai de 3 jours | xhigh | après B | — |
## Questions (réponse par défaut appliquée tant qu'Yvv n'a pas tranché)
| # | Question | Défaut |
| # | Question | Réponse |
|---|---|---|
| Q1 | Voter dans Monnaie libre avant la connexion Ğ1 (poka) | lier sa clé Ğ1 une fois par une transaction commentée, puis voter ici |
| Q2 | Les votes se voient-ils avec les noms ? | oui, votes nominatifs visibles des membres du groupe |
| Q3 | Échelle des cinq crans | calée sur la participation médiane du groupe |
| Q4 | Le titre d'un article se vote-t-il à part ? | non : un article = titre + texte ; seul le titre du doc devient un module |
| Q1 | Comment voter dans Monnaie libre | **tranché** : une transaction de 0,1 Ğ1 par vote, signée par le portefeuille (Ğ1Companion, Ğecko, plus tard trustinWallet), un seul geste ; une personne, une voix, qui s'exprime autant de fois qu'elle veut, le dernier vote fait foi |
| Q2 | Les votes se voient-ils avec les noms ? | **tranché** : totaux seulement |
| Q3 | Échelle des cinq crans | **tranché** : calée sur la participation médiane |
| Q4 | Le titre d'un article se vote-t-il à part ? | **tranché** : non ; seul le titre du doc devient un module (4) |
| Q5 | Secret du vote (Q2) et transaction publique (Q1) : le commentaire porte le choix en clair, ou une empreinte scellée ? | défaut : empreinte scellée (la chaîne montre qui a voté et quand, pas quoi) |
Défauts posés par orch, sans question (Yvv peut les corriger) :
- Décisions : « modules restant à voter » = les modules du doc pas encore adoptés par un vote