- 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>
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–C10 (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.
|