- 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>
3.3 KiB
Contribuer à libreDecision
On travaille un chantier à la fois, livré complet et en production avant le suivant
(docs/chantiers/README.md). Le chantier en cours a sa fiche :
docs/chantiers/acte-certification/CHANTIER.md — toute décision de comportement s'y adosse,
ou propose de l'amender, argumentée.
Première fois ? Commence par docs/chantiers/acte-certification/ONBOARDING.md.
Les branches — travailler à deux
main = la production. Tout push sur prod/main déploie decision.librodrome.org.
chantier/acte-certification = la branche commune du binôme (Yvv · Chiara), toujours verte.
chiara/<sujet>, yvv/<sujet> = une branche courte par sujet, partie de la branche du chantier.
git switch chantier/acte-certification && git pull --rebase origin chantier/acte-certificationgit switch -c chiara/<sujet>— un sujet, une branche, quelques commits.- Boucle verte (ci-dessous), puis push de la branche et demande de fusion vers
chantier/acte-certificationsur la forge (git.open.us.org/yvv/decision). - Le chantier passe dans
mainquand la boucle est verte et les contrôles d'usage passés.
On ne pousse jamais directement sur main, et jamais de --force sur une branche partagée.
La boucle — une tâche n'est faite que si tout est vert
export PATH=$HOME/.cargo/bin:$PATH
cargo fmt --all --check
cargo clippy --workspace --all-targets -- -D warnings
cargo test --workspace
cd web
npm run check # svelte-check, zéro avertissement
npm test # vitest : markdown, parité des catalogues i18n, anti-lexique
npm run build
npm run e2e # Playwright : C1–C11 (bureau) + M1 (mobile), serveur jetable sur :8092
L'image Docker rejoue les mêmes portes : un contrôle rouge, pas d'image, pas de déploiement.
Conventions
- Interface en français, code en anglais (identifiants, commentaires, messages de log).
- Trilingue dès le départ : toute chaîne affichée vit dans
web/src/lib/i18n/fr.ts(la source), puisen.tsetes.ts. Le test de parité refuse une clé manquante ou un paramètre{x}qui diffère. Le texte voté est le français ; les traductions sont éditoriales. - Ton : tutoyer la personne ; le sujet est la personne ou le collectif, jamais le système.
Mots interdits à l'écran (
FORBIDDEN_UI_TERMS) : « triage », « verdict », « déléguer »… - Moteur pur :
crates/ld-enginen'a ni I/O, ni base, ni réseau. Toute règle de vote, d'édition ou de composition s'y écrit et s'y teste d'abord. - Accès : le serveur ne décide jamais seul qui voit quoi — il demande à
trustin-access. - Données runtime (
data/, volumelpk-libredecision-app_data) : jamais écrasées, jamais réinitialisées ; une migration ajoute, elle ne réécrit pas. - Design : sans bordures (profondeur par fond et ombre), arrondis 16 / 12 / 20 / 14 px, deux ambiances (pierre, nuit), Literata pour les textes, Nunito pour l'interface.
- Commits : en français, une intention par commit,
git addavec chemins explicites.
Signaler
« Faire un retour » (dans le menu de gauche, sur chaque page) envoie une note datée avec la
page, la langue et la taille de l'écran ; elles se lisent dans trustinWallet (/acces).
Pour un bug reproductible, une issue sur la forge avec les étapes.