Files
decision/HANDOFF.md
T
2026-11-03 20:24:11 +01:00

179 lines
13 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# HANDOFF — libreDecision
> Dernière mise à jour : 2026-11-03 à 20 h 24, intégrateur libredecision-d4 (orch : dev-63, session
> racine /DEV, mandat « déploie » et « pousse » du 03/11 au 08/11). État vivant : le tableau
> `docs/chantiers/acte-certification/tableau.md`.
## Où on en est (03/11)
- **M6 en ligne** depuis le 03/11 à 07 h 03 (`94ddb17`, pipeline 37 ;
`actes/2026-11-03-m6-propositions-seed-quorum-tampon.md`) :
- l'accueil sous la voûte (lot H) ;
- les Propositions seed : I1, E1, E2 ouvertes, au cran 2, aucun article en vigueur (ADR 0011) ;
- le quorum par cran, 12 · 12 · 50 · 50 · 50 en Monnaie libre, les votants manquants comptent
« non » (ADR 0013) ; la licence `AGPL-3.0-or-later` (lot S) ;
- le tampon des votes et le **vote simulé ouvert dans Monnaie libre** (pas de `LD_VOTE_ACCOUNT`),
marqué « simulé », qui compte puis s'efface par l'acte « supprime » à l'ouverture de la chaîne
(`ld-server discard-simulation`, serveur arrêté) ; la publication **pas avant des votes prouvés**
(lot V, ADR 0012). Le dépôt des textes reste à `9e0f45a`.
- **À dire à Yvv** : pas de lien d'équipe vers Monnaie libre pendant la simulation (chaque ouverture
est une voix simulée de plus).
- **M6b en ligne** depuis le 03/11 à 08 h 02 (`bb4bdf5`, pipeline 38 ;
`actes/2026-11-03-m6b-textes-quorum.md`) : F1.1, F1.2 et N1.1 disent le quorum par cran, en fr, en,
es, dans les deux groupes. Pour Yvv : `docs/chantiers/acte-certification/textes-quorum-seed.md`
(Q13, quatre défauts appliqués) et trois phrases à reprendre (Q14).
- **M7 en ligne** depuis le 03/11 à 09 h 42 (`b2e597b`, pipeline 39 ; `actes/2026-11-03-m7-lecteur.md`) :
le lecteur refait (lot U), page 2,4 fois plus courte, l'ordre en une ligne au bout de sa section avec
poignées et vote sur place, Propositions seed en tête, « 9 oui sur 12 votants pour passer », votes
simulés dits simulés. **À dire à Yvv** : « Fixer ce quorum » est visible pour lui (administrateur) sur
les 33 articles du seed tant que personne n'y a voté, et écrit en base.
- **M6c en ligne** depuis le 03/11 à 11 h 05 (`84f015a`, pipeline 40 ;
`actes/2026-11-03-m6c-phrases-quorum.md`) : les trois phrases de F1.1, F1.2 et N1.1 justes (lot T2),
l'interface sans « presque l'unanimité ». Pour Yvv (`textes-quorum-seed.md`, section « Lot T2 ») :
F1.2 « tant que l'article ne garde la trace d'aucun vote » (point 8) ; N1.1 « pas un nombre minimal de
votants », faux pour un quorum d'auteur bas.
- **M7b en ligne** depuis le 03/11 à 12 h 23 (`6f6197c`, pipeline 41 ;
`actes/2026-11-03-m7b-lecteur-mineurs.md`) : les mineurs du lecteur (lot U2) : cibles de 44 px sur
téléphone, les trois lectures entières, « Proposer cet ordre » dit pourquoi il est éteint, une
information à un seul endroit dans le vote déplié, l'en-tête « 3 Propositions seed · 32 propositions en
cours », la pastille d'un changement d'inertie de module.
- **M8 figé, à mettre en ligne par orch** (`de1b7eb`, `actes/2026-11-03-m8-chiffres-dates.md`) : lots T3, T3b
et T3c, sur la réponse d'Yvv du 03/11 (« pas de chiffre datés dans un texte voté »). L'exemple chiffré de
N1.1 sort ; F1.2 et N1.1 écrivent le terme défini (« à la participation habituelle », « le quorum de
l'article ») et chaque phrase est vraie pour tout W et tout quorum ; F1.1 inchangé. Trois relectures :
« 2ce2028 : à reprendre », « e7ab82f : à reprendre », « de1b7eb : ok ». En tête du dossier, pour Yvv,
chaque phrase avant / après. Après la mise en ligne : retirer les copies de l'intégrateur
(`m8/base-b`, `m8/lecture`, `m8/rep`, `m8/dump` du scratchpad), mettre à jour le tableau.
- **Aucun autre lot en cours** : H, S, V, T, U, T2 et U2 sont en ligne ; rien ne se lance sans ordre
d'orch. Listes d'attente (relectures de M6, M6c, M7, M7b, M8) : au tableau, section Actes. Le plus
visible : le vote d'un changement d'inertie de module ne dit pas le cran visé.
- **Purge faite** le 03/11 à 12 h 30-12 h 31 (ordre d'orch PURGE-LD) : les sept copies de travail des lots
fusionnés et leurs 13 branches (`-d`, rien poussé) ; les bases de test et captures des sous-agents sous
`/tmp` (synthétiques, aucune de la production) ; 688 restes des tests cargo et scripts e2e. Restent
`/tmp/ld-e2e`, son verrou et `/tmp/ld-h-shots` (captures du lot H, hors de l'ordre).
## Avant le 03/11
**Revue d'Yvv du 2026-10-30** : treize points (L1 à L13), suivis dans
`docs/chantiers/acte-certification/tableau.md` (lots, questions, actes ; source d'état).
- **M1 en ligne** depuis le 2026-10-30 à 15 h 45 (`8727315`) :
- accueil sur le choix du groupe ;
- logo « Clé de voûte » et quatre ambiances ;
- menu, « En cours » et « À venir » ;
- Décisions ;
- Raison d'être, publiée dans le dépôt des textes, commit `35864eb` ;
- versions groupées.
- **L9 à L13 fusionnés et relus** sur `chantier/acte-certification` :
- le vote déplié et groupé, et le vote par la chaîne Ğ1, corrigé mais livré éteint (B, B2) ;
- l'inertie à cinq crans (C) ;
- l'ordre des articles et le titre du document en modules (D) ;
- les objections, les coquilles validées et la boîte « Messages » (F).
Boucle verte (230 tests Rust, 55 vitest, e2e 35 / 35), image de production construite.
- **M4 en ligne** depuis le 01/11 à 23 h 06 (`4d4adcc`) : L9 à L13.
- **M5 en ligne** depuis le 02/11 à 03 h 04 (`3f10a0e`) :
- sur une version retenue, « contre » et retrait, jamais « pour » (lot G) ;
- F1.2, N1, N1.1 et O1 réécrits selon les règles appliquées, qu'Yvv relit en ligne ;
- la licence AGPL-3.0.
- **Ce qui n'est pas actif en production** :
- la connexion par la clé Ğ1 (`/api/auth/config` → `"g1":false`) : il faut le client OAuth de
connect.monnaie-libre.fr (`DEMANDE-CONNECT.md`) ;
- le vote par la chaîne : il faut l'adresse du compte de vote qu'Yvv crée dans Ğecko.
- Le vote par la chaîne reste éteint tant qu'Yvv n'a pas tranché Q5 à Q8 (tableau ;
`docs/recherche/vote-g1-chaine.md`).
- Q5 à Q8 tranchées le 01/11 (registre d'Yvv). Attendu d'Yvv : l'adresse du compte de vote, l'identifiant
et le courriel de Chiara (acte « accorde »), sa relecture des quatre textes en ligne.
**Chantier 1 — Acte d'engagement Certification** : **en ligne** sur decision.librodrome.org,
version `dc2de09` depuis le 2026-10-24 à 01h37 (sessions jusqu'à ce qu'on les ferme ; avant :
`744d157`, le 2026-10-22) ;
la maquette est sur maquette.decision.librodrome.org (certificat jusqu'au 19/01/2027). En ligne :
liens d'équipe, nouveau lien de connexion, noms uniques et mention « sur invitation », règles de
coquilles des relectures 7 à 10, publication vers `yvv/decision-depot-textes-reference` (état et
« Publier maintenant » dans `/acces`). Première publication le 2026-10-22 à 03 h 22 (commit
`4cc0fdd` : `monnaie-libre/acte-engagement-certification/` fr, en, es, document.json, README).
**Prêt, pas encore en ligne** (2026-10-23) : les sessions durent **jusqu'à ce qu'on les ferme**
(400 jours recomptés à chaque visite, au lieu de 30 jours fixes) ; dans `/acces`, « Fermer ses
sessions » par identité (appareil perdu, départ), jamais celle d'où l'on agit, avec le lien de
connexion encore en attente pour elle. Raison : une personne invitée n'a pas de clé Ğ1 pour
revenir, une session expirée lui coûtait un nouveau lien. Les sessions ouvertes pour 30 jours
passent à 400 jours à leur prochaine visite.
Incident du 2026-10-21 : Docker a redémarré sur sonic à 21 h 47 ; l'agent Woodpecker
`aya-woodpeckerci-local-agent-1` gardait l'ancienne socket (pipeline n° 31 : « Cannot connect to
the Docker daemon », rien construit). Remède : `docker restart aya-woodpeckerci-local-agent-1`
(fait avec l'accord d'Yvv), puis « Redémarrer » le pipeline dans l'interface Woodpecker.
- v3 Rust + Svelte à la racine du dépôt ; la maquette v2 intacte dans `maquette/`.
- Boucle : Rust (fmt, clippy `-D warnings`, 71 tests dont 17 scénarios d'API et la
publication vers un dépôt nu) · interface (svelte-check 0 avertissement, 9 vitest) ·
e2e 13 / 13 (C1–C12, M1). L'image Docker rejoue tout et a été essayée localement :
santé, interface, volume non-root, clé de publication, lien admin initial (0600, absent
des journaux), publication immédiate au démarrage, redémarrage sans commit superflu.
- Déploiement : `.woodpecker/app.yml` d'abord (le produit à la racine, qui retire de la
racine tout conteneur qui la revendique), puis `.woodpecker/maquette.yml` (la maquette part
sur maquette.decision.librodrome.org, seulement si le produit a réussi).
- Relectures indépendantes avant mise en ligne, chacune traitée avant de livrer : `1f9c241 :
ok`, `94907af : ok`, puis quatre « à reprendre » (`ac9c904`, `9203fd2`, `1eac6f8`, `6c0754a`),
toutes sur la même question : une « coquille » (sans vote, publiée) qui change un sens, puis
`fa8e8dc : ok` (mis en ligne), `c3d6bf8 : ok`, `fd19dbf : ok`, `753b522 : ok`, `8a32160 : ok`,
`850f9c4 : ok`, `744d157 : ok` (en ligne) ; pour les sessions : `cf634c2 : ok`, `decbc0b : à
reprendre`, `dc2de09 : ok` (en ligne le 2026-10-24). La règle est désormais simple et explicable : **une coquille touche les lettres et les espaces,
rien d'autre** (CHANTIER.md, ADR 0003). Autres points traités : ordre des workflows, anciens
conteneurs en `restart: always`, vote réservé aux membres de la toile dans Monnaie libre (une
personne, une voix), lien d'invitation jamais vers une identité Ğ1, réservation du lien avant
usage, redirection après connexion, en-têtes anti-encadrement, cookies `__Host-`, retour
arrière automatique du déploiement (maquette au premier, version précédente ensuite), courses
entre correction et entrée en vigueur, syft épinglé.
## Ce qui attend Yvv
1. **Envoyer la demande à poka** : `docs/chantiers/acte-certification/DEMANDE-CONNECT.md`.
2. ~~Dépôt des textes~~ : fait le 2026-10-22 — `yvv/decision-depot-textes-reference` (privé), clé de
déploiement en écriture ajoutée par Yvv. À l'ouverture : rendre le dépôt public (Paramètres ›
Dépôt), ou le transférer ; changer de dépôt : `LD_PUBLISH_REMOTE` dans `docker/app-compose.yml`.
3. **Ouvrir trustinWallet** avec le lien administrateur initial (remis hors conversation, un
seul usage : il crée l'identité administratrice). Pour l'équipe : un **lien d'équipe**
(`/acces` → Liens d'équipe ; chaque personne qui l'ouvre a sa propre identité), ou une
invitation par personne. Pour soi sur un autre appareil : « Nouveau lien de connexion ».
4. Donner à Chiara un compte **git.open.us.org** collaboratrice de `yvv/decision`.
5. Décider : la **licence** du code ; le texte F1.2 du seed (annonce C = 0 et 30 jours).
6. **Connexion Ğ1 par sso-connect** (2026-10-23) : plan dans
`trustinWallet/docs/PLAN-sso-connect.md`. Les portefeuilles ne signent que pour
`connect.monnaie-libre.fr` : libreDecision en sera client (point 1), jamais son propre
serveur. Première contribution **ouverte le 2026-10-23** :
https://git.duniter.org/clients/sso-connect/-/merge_requests/7 (depuis ton fork
`Yvv/sso-connect`, branche `feat/page-neutre` : page neutre entre portefeuilles, et la page
nomme le site qui demande la connexion). Commentaire posté à 1000i100 sur sa !6 (faille des
adresses locales). Restent à toi : révoquer le jeton `mr-sso-connect`, poster
`trustinWallet/docs/MESSAGE-forum-sso-connect.md` sur le fil, et trancher la stratégie de
trustinWallet (couche de confiance qui fait signer par les portefeuilles existants, ou
portefeuille complet ; bulletins de vote signés et ancrés par une remarque sur la chaîne
plutôt qu'une transaction par vote).
## Pour reprendre
- **Premier geste de la session suivante** (Yvv, 2026-10-22 : « redonne cette consigne quand je
relance ce chantier ») : rappeler à Yvv le compte git.open.us.org de Chiara (collaboratrice
de `yvv/decision`) et les deux choix en attente, la licence du code et le texte F1.2 du seed.
- Lire `docs/chantiers/acte-certification/CHANTIER.md` puis `CONTROLES.md`.
- Les retours de Chiara arrivent dans `/acces` → Retours : chacun est un contrôle à repasser.
- Quand les identifiants connect arrivent : `DEMANDE-CONNECT.md` § « À la réponse ».
- Chantier suivant (après la mise en production et les retours) : Acte d'engagement forgeron.
- Restes des relectures, non bloquants, pour la prochaine série :
- `publish.rs` : motif `ls-remote` en `refs/heads/<branche>` (une branche `x/main` le trompe) ;
« Dernière publication » rattachée au dépôt affiché ; compter les documents en attente, pas
les lignes de la file ;
- mention « sur invitation » : en `kind <> 'g1'` (tout type futur) ; tests de ce qui s'affiche
(révision visible, signalement, bout en bout) ; auteur des retours dans `/acces` avec son type ;
- noms : sosies latins étendus et ligatures (ı, ł, œ, ß…), invitations créées par un
administrateur sans contrôle de nom ;
- `sbom-publish` échoue (curl 60 : certificat du serveur Dependency-Track refusé) — étape en
`failure: ignore`, déjà le cas avant la v3 ;
- sessions (relecture de `dc2de09`) : un contrôle e2e « nouveau lien, fermer ses sessions, le
lien disparaît » ; la réservation d'un lien et l'ouverture de sa session dans une même
transaction (sinon un lien ouvert à l'instant de la fermeture laisse une session) ; après
« Annuler » une invitation dans la liste, retirer aussi le lien affiché (défaut déjà en
ligne) ; `Cache-Control: no-store` sur `/api`.