Contribute

Contributing to SSH-Frontière

Contributions are welcome, including contributions assisted or generated by artificial intelligence. SSH-Frontière is itself developed with Claude Code agents.

Before you start

Open an issue to discuss the proposed change. This avoids unnecessary work and validates the approach.

Process

1. Issue       → discuss the change
2. Fork        → git checkout -b feature/my-contribution
3. TDD         → RED (failing test) → GREEN (minimal code) → refactor
4. Verify      → make lint && make test && make audit
5. Pull request → describe, reference the issue, green CI

Quality requirements

SSH-Frontière is a security component. Requirements are strict:

RuleDetail
Test coverage90% minimum for added code
No unwrap()Use expect() with // INVARIANT: or ? / map_err()
No unsafeForbidden by #[deny(unsafe_code)]
800 lines maxPer source file
60 lines maxPer function
Formattingcargo fmt mandatory
Lintscargo clippy -- -D warnings (pedantic)

Dependencies

Zero non-essential dependencies. Before proposing a new dependency:

  1. Check that the Rust stdlib doesn't cover the need
  2. Evaluate with the dependency matrix (minimum score 3.5/5)
  3. Document the evaluation in docs/searches/

Currently authorized dependencies: serde, serde_json, toml.

Commit conventions

Messages in English, format type(scope): description:

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

AI contributions

Contributions generated by AI are accepted under the same conditions as human contributions:

Security

Reporting a vulnerability

Do not report vulnerabilities via public issues. Contact the maintainer directly for responsible disclosure.

Reinforced review

PRs touching these files undergo a reinforced security review:

Good first contributions

License

SSH-Frontière is distributed under EUPL-1.2. By submitting a pull request, you agree that your contribution will be distributed under the terms of this license.

For full details, see the CONTRIBUTING.md file in the repository.