forked from yvv/decision
148 lines
10 KiB
Markdown
148 lines
10 KiB
Markdown
# HANDOFF — libreDecision
|
||
|
||
> Dernière mise à jour : 2026-11-03 à 07 h 08, 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).
|
||
- **En cours** : lot T (F1.1, F1.2, N1.1 réécrits sur le quorum, fichier de relecture pour Yvv), puis
|
||
lot U (le lecteur, M7). Liste d'attente de la relecture de M6 : au tableau.
|
||
|
||
## 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`.
|