Files
decision/HANDOFF.md
T

13 KiB
Raw Blame History

HANDOFF — libreDecision

Dernière mise à jour : 2026-11-03 à 12 h 31, 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.
  • Aucun lot en cours (03/11 à 12 h 30) : 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) : au tableau, section Actes. Le plus visible : le vote d'un changement d'inertie de module ne dit pas le cran visé.
  • Pour la purge (sur mot d'orch) : les copies de travail des lots fusionnés (.claude/worktrees/, sept, toutes propres et fusionnées) ; les bases de test des sous-agents sous /tmp (ld-relis-m6 5,9 Go, ld-u2-data, ld-u-data, ld-h-data : synthétiques, aucune de la production) et leurs captures (ld-relis-m7, -m6c, -m7b, ld-u-shots, ld-u2-shots).

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.