DocumentationCONTRIBUTE

CONTRIBUTE

Patches we accept. Patches we reject.

Open contributor process — slightly opinionated about discipline, never about who you are.

01

Pick something to work on

The repository labels first-touch issues as good-first-issue. The maintainers triage these to confirm the scope is fair and the steps are clear. If you finish one, leave it labelled — it helps the next person.

For larger work, open a discussion first. We will say yes, no, or not yet, here is why. Saying no is part of respecting your time.

02

Sign your commits

shell# in your local clone
git config user.signingkey YOUR_KEY_FINGERPRINT
git config commit.gpgsign true
git config tag.gpgsign true

We require GPG-signed commits. This is not about gatekeeping — it is about keeping the project supply chain honest. If you do not have a key yet, the repository wiki walks you through generating one.

Sign-off line
Every commit message must end with a Developer Certificate of Origin sign-off (Signed-off-by: Name <email>). Use git commit -s to add it automatically.
03

Write a conventional commit message

commit messagefeat(lsia): emit telemetry on safe-mode entry

Adds a single counter when the immune-system engine enters safe mode.
The counter is hashed-pattern only and respects the privacy gate.

Refs: #842
Signed-off-by: A. Researcher <a@example.org>

We follow the Conventional Commits spec for the first line. The body explains why. The footer references issues or related changes.

04

Open the pull request

Pull requests run through three automated gates and a human review:

  • The reproducible-build check verifies your patch does not break determinism.
  • The privacy gate verifies no raw data path was introduced.
  • The unit and integration test suite must pass.
  • Two reviewers approve before merge. Security-sensitive areas require a security reviewer.
If the privacy gate fails
Stop. Re-read the diff carefully — the test fails when a code path could leak raw identifiers (IP, email, IMEI, GPS). The fix is almost never to disable the test.
05

Recognition

Every accepted contribution appears in the next release notes — with credit, unless you ask for anonymity. The AUTHORS file is updated automatically the first time you merge a change.

For larger work — a major feature, an audit, a translation — the changelog entry calls you out by name. Anonymous credit is a normal request, not a special one.

06

Code of conduct

We follow the Contributor Covenant 2.1. Personal attacks, threats, doxxing, and harassment are immediate-removal violations, no complaint chain required. The full text is in the repository CODE_OF_CONDUCT.md.