Ctrl K
ComunidadGuías…

GOVERNANCE.md

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

Archivo original ↗Preguntar a KiBot
# RustChat Governance

## Overview

RustChat is an open-source project maintained by its community of contributors.
This document describes how the project is governed today and how decisions are
made.

## Current State

The project is currently maintained by a small core team with community
contributions. As the project matures, governance may evolve to include a
technical steering committee or similar structure.

## Roles

### Maintainers

Maintainers have write access to the repository and are responsible for:

- Reviewing and merging pull requests
- Triaging issues
- Cutting releases
- Enforcing the code of conduct
- Setting technical direction

See [MAINTAINERS.md](MAINTAINERS.md) for the current list.

### Contributors

Anyone who submits a pull request, reports an issue, or improves documentation
is a contributor. Contributors are recognized in release notes and commit
history.

### Reviewers

Reviewers are domain experts who review pull requests in specific areas (for
example Mattermost compatibility, security, and architecture). They are listed
in [CODEOWNERS](.github/CODEOWNERS).

## Decision Making

### Day-to-Day Changes

- Most changes are decided through pull request review.
- Every merged PR requires an independent human approval unless an explicitly
  documented emergency process says otherwise.
- Elevated and architectural changes additionally require maintainer
  sponsorship/sign-off and the evidence defined by the corresponding risk tier.
- The PR author does not count as the independent reviewer. A maintainer who authors the PR may satisfy the maintainer-sponsorship requirement, but still needs a separate independent human approval.
- For the highest-risk architectural changes (authentication/security model,
  storage/data model, protocol compatibility, repository governance), seek a
  second independent review when the active reviewer pool permits. This is a
  target, not a falsely unenforceable hard gate with the current small team.
- `.governance/risk-tiers.yml` is the machine-readable source for the current
  review/evidence policy.

### Architectural Decisions

New significant technical decisions are recorded as Architecture Decision
Records (ADRs) under **`docs/adr/`**, whose index is
[docs/adr/README.md](docs/adr/README.md).

`docs/decisions/` is retained only for backward-compatible links/indexes. Do
not create new ADRs there.

An ADR is required for:

- New major dependencies
- Database/storage model changes
- Authentication or security model changes
- API/protocol compatibility breaking changes
- Infrastructure or deployment model changes
- Repository-wide governance/security model changes

Short-form decision notes may still be used for elevated changes that do not
meet the ADR threshold.

### Conflict Resolution

If reviewers disagree on a change:

1. Discuss in the pull request with technical arguments.
2. If unresolved, escalate to maintainers listed in [MAINTAINERS.md](MAINTAINERS.md).
3. Maintainers make a binding decision with a written rationale.

## Pull Request Size and Risk

`.governance/pr-size-limits.yml` provides hard size guidance for standard and
elevated work so routine PRs remain reviewable.

Architectural changes are different: `.governance/risk-tiers.yml` intentionally
does not impose an arbitrary hard file/line ceiling. They still must be
coherent, reviewable, and split when independent decisions can be separated.
Large architectural PRs require independent review, maintainer sponsorship, and
design evidence rather than mechanical line slicing.

A contributor must not relabel ordinary feature work as "architectural" merely
to bypass standard/elevated size limits.

## Repository Integrity Program

ADR-006 defines a staged repository-integrity program. Its machine-readable
contracts begin in `planned` state and become `active` only after implementation
and objective evidence.

The program does not override agent path boundaries or existing human-review
requirements.

## Machine-Readable Governance Files

The `.governance/` directory contains YAML files used by maintainer automation
and CI tooling, including:

- `agent-contracts.yml`
- `risk-tiers.yml`
- `protected-paths.yml`
- `pr-size-limits.yml`
- `repository-integrity-contracts.yml`

These files are policy. Changes to them are architectural and require the
corresponding human review.

## Contributing

All contributions are welcome. See [CONTRIBUTING.md](CONTRIBUTING.md) for the
workflow.

All contributions must be signed off per the [DCO](DCO.md).

## Code of Conduct

RustChat follows the [Contributor Covenant Code of Conduct](CODE_OF_CONDUCT.md).
Violations should be reported to the maintainers.

## Roadmap

The public roadmap is maintained in [ROADMAP.md](ROADMAP.md).

## License

RustChat is released under the [Apache-2.0 License](LICENSE).