# Contributing to pvtcoms

Thanks for your interest. pvtcoms is a security-critical, privacy-first messenger; contributions
are held to a high bar. Read [`CLAUDE.md`](./CLAUDE.md), [`.claude/rules/coding-standards.md`](./.claude/rules/coding-standards.md),
and [`THREAT_MODEL.md`](./THREAT_MODEL.md) before starting.

## License & sign-off (DCO — not a CLA)

pvtcoms is **AGPL-3.0-or-later** (see [`LICENSE`](./LICENSE) and [`LICENSE-EXCEPTIONS.md`](./LICENSE-EXCEPTIONS.md)).
We use the **Developer Certificate of Origin** ([`DCO`](./DCO)), **not** a CLA — so no one can
silently relicense the project closed-source. By contributing you certify the DCO.

**Every commit must be signed off:**

```bash
git commit -s -m "feat(core): ..."
```

This appends a `Signed-off-by: Your Name <you@example.com>` line (your real name or a consistent
pseudonym + a reachable email). Contributions without a sign-off cannot be merged.

Add the SPDX header to new source files:

```
// SPDX-License-Identifier: AGPL-3.0-or-later
```

## Workflow (the pipeline)

`BACKLOG → CODE → TEST → PROMOTE → COMMIT`. Capture work first:

```bash
python3 scripts/docs/backlog_ops.py add "Title" --category feature
python3 scripts/docs/backlog_ops.py start SR-ID
# code + tests (cargo test) ...
python3 scripts/docs/backlog_ops.py done SR-ID && python3 scripts/docs/backlog_ops.py promote
git commit -s   # pre-commit hooks enforce tests / CHANGELOG / standards
```

## Security non-negotiables

Never roll your own crypto · never log plaintext/keys/tokens/IPs · zeroize secrets · fail closed
(no Tor→clearnet fallback) · no telemetry. See `.claude/rules/coding-standards.md`. Security
issues: please report privately (see `SECURITY.md`), not via public issues.

## Trademarks

Code is AGPL; the pvtcoms **name/logo** are not — see [`TRADEMARK.md`](./TRADEMARK.md).
