Contribuer

Contribuer à SSH-Frontière

Les contributions sont les bienvenues, y compris les contributions assistées ou générées par intelligence artificielle. SSH-Frontière est lui-même développé avec des agents Claude Code.

Avant de commencer

Ouvrez une issue pour discuter du changement proposé. Cela évite du travail inutile et permet de valider l'approche.

Processus

1. Issue       → discuter du changement
2. Fork        → git checkout -b feature/ma-contribution
3. TDD         → RED (test qui échoue) → GREEN (code minimal) → refactorer
4. Vérifier    → make lint && make test && make audit
5. Pull request → décrire, référencer l'issue, CI verte

Exigences de qualité

SSH-Frontière est un composant de sécurité. Les exigences sont strictes :

RègleDétail
Couverture tests90% minimum pour le code ajouté
Pas d'unwrap()Utiliser expect() avec // INVARIANT: ou ? / map_err()
Pas d'unsafeInterdit par #[deny(unsafe_code)]
800 lignes maxPar fichier source
60 lignes maxPar fonction
Formatagecargo fmt obligatoire
Lintscargo clippy -- -D warnings (pedantic)

Dépendances

Zéro dépendance non vitale. Avant de proposer une nouvelle dépendance :

  1. Vérifiez que la stdlib Rust ne couvre pas le besoin
  2. Évaluez avec la matrice de dépendances (score minimum 3.5/5)
  3. Documentez l'évaluation dans docs/searches/

Dépendances autorisées actuellement : serde, serde_json, toml.

Conventions de commit

Messages en anglais, format type(scope): description :

Types : feat, fix, refactor, test, docs.

Contributions IA

Les contributions générées par IA sont acceptées aux mêmes conditions que les contributions humaines :

Sécurité

Signaler une vulnérabilité

Ne signalez pas les vulnérabilités via les issues publiques. Contactez directement le mainteneur pour une divulgation responsable.

Revue renforcée

Les PR touchant ces fichiers font l'objet d'une revue de sécurité renforcée :

Bonnes premières contributions

Licence

SSH-Frontière est distribué sous EUPL-1.2. En soumettant une pull request, vous acceptez que votre contribution soit distribuée sous les termes de cette licence.

Pour les détails complets, consultez le fichier CONTRIBUTING.md dans le dépôt.