- Accueil : le titre, le leitmotiv en trois lignes (contexte et cadrage ·
processus et modalités · boîte à outils), puis directement le choix du
groupe ; sans session, la connexion à sa place. /groupes redirige vers /,
« Mes groupes » et le retour après connexion mènent à /.
- Logo « Clé de voûte » du DA (signe en currentColor, clé en --cle, libre
Literata italique, Decision romain), droit, dans le menu et la barre
mobile ; Stamp retiré, le sceau 井 ne bouge pas. Favicon, icônes 16/32/48,
apple-touch, 192/512, manifeste.
- Quatre ambiances : pierre et calcaire (claires), nuit et ardoise
(sombres), --cle par ambiance ; quatre pastilles à la place du soleil /
lune ; première visite selon l'appareil (pierre / nuit). Calcaire et
ardoise : textes, accent, mousse et avertissement à 4,5:1 au moins.
- Page d'un groupe : les quatre piliers, puis « En cours ».
- Menu : nombre de docs en cours à côté de « Docs de référence », surligné
seulement dedans, seul Docs réagit au survol ; les trois autres éteints
mais ouvrent leur page ; hors d'un groupe, le dernier groupe ouvert.
- /g/[group]/docs « En cours » + « À venir » ; /mandats et /protocoles du
groupe : « À venir » éteints ; /g/[group]/decisions : une ligne par doc,
« N modules à voter », « dont N sans ton vote ». Anciennes adresses
/decisions, /mandats, /protocoles : vers le groupe courant, sinon /.
- e2e : C1, C2, C11, C12, M1 mis à jour ; C13–C17 pour L1–L6 ; CONTROLES.md.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- Tout auteur venu par invitation porte « sur invitation » à côté de son
nom (propositions, révisions, signalements) : un nom pris avant l'arrivée
de son titulaire Ğ1, ou une lettre sosie, ne passe pas pour un membre de
la toile.
- Un lien d'équipe refuse aussi le nom qu'une invitation attend encore.
Boucle : 68 tests Rust, svelte-check, 9 vitest, e2e 13/13.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- Noms des liens d'équipe : comparés sans casse, accents ni ponctuation
(ld_engine::names), lettres latines seulement (pas de sosie cyrillique,
grec ou pleine chasse), une ligne ; index unique (migration additive
0003) contre deux ouvertures simultanées sous le même nom.
- Une personne déjà connectée ne prend une place que si le lien lui
ajoute un groupe ; « Ce n'est pas moi » la déconnecte sur un navigateur
partagé ; un lien collé dans le même onglet est relu.
- Coller ou couper un mot de quantité n'est pas une coquille
(« sur tout » → « surtout », « par tout » → « partout »).
- Libellés sans caractère de contrôle ; la soumission revérifie le titre.
Boucle : 68 tests Rust, svelte-check, 9 vitest, e2e 13/13.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Liens d'équipe (Yvv, 2026-10-21) : un lien réutilisable jusqu'à une date
et pour un nombre de personnes, révocable. Chaque ouverture demande un nom
et crée sa propre identité d'invitation, jamais administratrice ; un nom
déjà pris est refusé ; une personne déjà connectée reçoit les groupes.
trustinWallet montre par quel lien chaque identité est venue, et donne un
nouveau lien de connexion à une personne invitée (autre appareil).
Migration additive 0002 (table team_links, colonne identities.team_link).
Publication : yvv/libredecision-textes sur git.open.us.org, pour
l'instant (un dépôt pour l'ouverture, puis le dépôt officiel, viendront).
Huitième relecture (c3d6bf8 : ok), points corrigés :
- une négation n'est jamais coupée ni formée par collage (« ja mais ») ;
- caractères invisibles : tout l'ensemble Unicode des ignorables et les
contrôles autres que saut de ligne et tabulation ;
- sauts de ligne et indentation font partie de la forme (listes) ;
- un titre tient sur une ligne.
Boucle : 65 tests Rust, svelte-check, 9 vitest, e2e 13/13 (C12 ajouté).
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- Mots collés ou coupés : deux au plus, jamais sur une négation
(« Si non » → « Sinon », « ne certifier » → « necertifier » sont du fond).
- Titre et corps jugés chacun pour soi, puis ensemble : le titre n'absorbe
plus le début du corps.
- Caractères invisibles refusés aussi au découpage d'un brouillon et à la
soumission.
- Tabulation et retour chariot ne sont plus des espaces libres ; les lettres
latines rares (ǃ, Ʒ…) font partie de la forme.
- Le diff renvoyé après une coquille couvre le titre.
Boucle : 62 tests Rust, svelte-check, 9 vitest, e2e 12/12.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- Dans Monnaie libre (électorat = toile de confiance), seuls les membres de la
toile votent (trustin_access::votes_in) ; une identité d'invitation y lit,
propose et signale. L'interface le dit à la place des boutons (fr/en/es).
- Un lien d'invitation ne vise jamais une identité Ğ1 ; le lien est réservé
avant de créer l'identité (deux acceptations simultanées : une seule passe).
- Un nombre n'est jamais une coquille (« 50 » → « 5,0 », « 1 5 » → « 15 »).
- Redirection après connexion : caractères de contrôle refusés.
- En-têtes : X-Frame-Options DENY, frame-ancestors 'none', nosniff, Referrer-Policy.
- Déploiement : le produit passe en premier ; la maquette attend son succès.
Les conteneurs, même arrêtés, qui revendiquent encore la racine sortent de
« restart: always » (ils reviendraient au redémarrage de Docker).
- Tests : 57 Rust (dont 14 scénarios d'API), e2e 12 / 12 avec C11.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- docker/app.Dockerfile : une image Rust + Svelte, la construction rejoue toute
la boucle (fmt, clippy -D warnings, tests, svelte-check, vitest) ; utilisateur
non-root, volume /data. docker/app-compose.yml pour sonic (fabio).
- .woodpecker/app.yml : produit sur decision.librodrome.org, attend la maquette,
écarte tout conteneur qui revendique encore la racine, healthcheck du commit.
- .woodpecker/maquette.yml (ex .woodpecker.yml) : la maquette v2 telle quelle,
sur maquette.decision.librodrome.org, mêmes volumes.
- .env.example de la maquette rangé dans maquette/ ; celui de la v3 à la racine.
- Docs : README, CONTRIBUTING (travail à deux), CLAUDE.md v3, HANDOFF,
docs/chantiers (feuille de route, fiche, contrôles, onboarding de Chiara,
demande à poka), docs/adr 0001–0006.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>