- 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>
64 lines
3.3 KiB
Markdown
64 lines
3.3 KiB
Markdown
# 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.
|
||
```
|
||
|
||
1. `git switch chantier/acte-certification && git pull --rebase origin chantier/acte-certification`
|
||
2. `git switch -c chiara/<sujet>` — un sujet, une branche, quelques commits.
|
||
3. Boucle verte (ci-dessous), puis push de la branche et demande de fusion vers
|
||
`chantier/acte-certification` sur la forge (`git.open.us.org/yvv/decision`).
|
||
4. Le chantier passe dans `main` quand 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
|
||
|
||
```bash
|
||
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), puis `en.ts` et `es.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-engine` n'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/`, volume `lpk-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 add` avec 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.
|