Ctrl K
ComunidadGuías…

CONTRIBUTING.md

Rama main · réplica de lectura del repositorio original.

Archivo original ↗Preguntar a KiBot
# Contributing to Goldroad

Thanks for your interest in contributing. Goldroad is writer-owned publishing on
the AT Protocol, and it is open source so the platform can never lock anyone in —
including its own writers.

Please read [`AGENTS.md`](AGENTS.md) first: it is the contract for both humans and
AI agents and covers the stack, conventions, and security/trust rules.

## License & the DCO (no CLA)

Goldroad's core is licensed **AGPL-3.0-only** (see [`LICENSE`](LICENSE)). We accept
contributions under the **Developer Certificate of Origin (DCO)** — **there is no
CLA**. This is deliberate: no CLA means no single party can ever relicense the core
away from the commons.

What this means in practice:

- **Every commit must be signed off.** Add a `Signed-off-by` trailer with
  `git commit -s`. By signing off you certify the [DCO](https://developercertificate.org/) —
  that you wrote the patch or otherwise have the right to submit it under the
  project's license. Use a real name and a reachable email.
- Your contribution is licensed to the project and its users under **AGPL-3.0-only**.
  You retain your copyright; there is no copyright assignment.
- **AGPL implication for operators:** because there is no CLA, any deployment that
  includes outside contributions must offer its users the exact corresponding source
  of the running version (AGPL §13). Goldroad satisfies this structurally — the
  public repository is the deploy source (publish-before-deploy). Don't add code or
  dependencies that would make that impossible, and don't add dependencies whose
  licenses are incompatible with AGPL-3.0.

## Workflow

1. **Branch** from the latest `main`. No direct commits to `main`.
2. **Implement** in small, logically-scoped commits (Conventional Commits:
   `feat:`, `fix:`, `chore:`, `docs:`, `refactor:`, `test:`).
3. **Run the gate** — it must pass, and CI enforces the same:

   ```sh
   pnpm gate        # Biome (warnings fatal), tsc --noEmit, Vitest
   pnpm build       # Workers bundle
   ```

4. **Sign off** every commit (`git commit -s`) and keep history linear (rebase onto
   `main`, don't merge `main` into your branch).
5. **Open a PR.** Keep it small and independently shippable. Describe what changed
   and why; link any issue.

## Review expectations

- The following get line-by-line human review: public API/route signatures, lexicon
  schemas & NSIDs (permanent!), auth/OAuth paths, payment code, DB migrations, and
  anything touching user data.
- PRs that touch `AGENTS.md`, `CLAUDE.md`, or CI workflows get byte-level review, and
  a CI check rejects invisible/non-printing Unicode in agent-instruction files.

## Reporting security issues

Do **not** open a public issue for a vulnerability. See [`SECURITY.md`](SECURITY.md).

## Code of conduct

Participating here means agreeing to the [`CODE_OF_CONDUCT.md`](CODE_OF_CONDUCT.md)
(Contributor Covenant 2.1). Report anything that breaches it to abuse@trygoldroad.com.