|
| 1 | +# Governance |
| 2 | + |
| 3 | +This document describes how the Mellea project is governed: the roles people hold, how decisions are made, and how code gets reviewed and merged. |
| 4 | + |
| 5 | +For related topics, see: |
| 6 | + |
| 7 | +- [CONTRIBUTING.md](CONTRIBUTING.md) — development setup, coding standards, and PR workflow |
| 8 | +- [CODE_OF_CONDUCT.md](CODE_OF_CONDUCT.md) — behavioral norms and enforcement |
| 9 | +- [RELEASE.md](RELEASE.md) — release cadence, versioning, and process |
| 10 | + |
| 11 | +## Roles |
| 12 | + |
| 13 | +| Role | Description | Examples | |
| 14 | +|------|-------------|----------| |
| 15 | +| **Contributor** | Anyone who opens issues, submits pull requests, or participates in discussions. No special access required. | External collaborators, first-time contributors | |
| 16 | +| **Committer** | Has merge/write access to the repository. Member of [`@generative-computing/mellea-contributors`](https://github.com/orgs/generative-computing/teams/mellea-contributors). | Team members with commit rights | |
| 17 | +| **Code Owner** | Domain expert listed in [`.github/CODEOWNERS`](.github/CODEOWNERS). Automatically requested as a reviewer for PRs touching their area. | Core library owners, intrinsics team | |
| 18 | +| **Maintainer** | Overall project stewardship. Holds release authority and can grant committer access. | Project leads | |
| 19 | + |
| 20 | +New committers are added by invitation from existing maintainers, based on sustained, high-quality contributions. |
| 21 | + |
| 22 | +## Code Ownership |
| 23 | + |
| 24 | +[`.github/CODEOWNERS`](.github/CODEOWNERS) defines required reviewers per area of the codebase. GitHub automatically requests reviews from the appropriate owners when a PR touches their files. |
| 25 | + |
| 26 | +Current ownership zones: |
| 27 | + |
| 28 | +| Path | Owners | |
| 29 | +|------|--------| |
| 30 | +| `mellea/core/` | @nrfulton, @jakelorocco | |
| 31 | +| `mellea/formatters/granite/`, `test/formatters/granite/` | @generative-computing/mellea-intrinsics | |
| 32 | +| Everything else | @generative-computing/mellea-contributors | |
| 33 | + |
| 34 | +## PR Review & Merge Policy |
| 35 | + |
| 36 | +### What approval means |
| 37 | + |
| 38 | +A GitHub approval is equivalent to an Apache-style **LGTM** and **implies ownership of the change**. By approving, you are vouching that the change is correct and appropriate. Only approve PRs in areas where you have sufficient domain context — for example, core library changes should be approved by someone with core expertise. |
| 39 | + |
| 40 | +### Requesting reviews |
| 41 | + |
| 42 | +If you explicitly tag someone as a reviewer, you are asking for their review specifically. All explicitly requested reviewers should approve before the PR is merged. CODEOWNERS also enforces required reviewers automatically — PRs cannot be merged until all required code-owner reviews are satisfied. |
| 43 | + |
| 44 | +### Reviewing |
| 45 | + |
| 46 | +- **Use "Request Changes" to block** — if you have concerns that must be addressed, use "Request Changes" rather than a comment-only review. This prevents the PR from being merged on another reviewer's approval alone. |
| 47 | +- **Respond to all review comments** — authors should resolve or reply to every review thread before merging. Don't let feedback get lost. |
| 48 | +- **Re-request review after significant changes** — if you push substantial updates after a review round, re-request review from the same reviewers so they can verify their feedback was addressed. |
| 49 | + |
| 50 | +### Merging |
| 51 | + |
| 52 | +Once a PR has approvals from all requested and required reviewers: |
| 53 | + |
| 54 | +- **Author has commit rights** — the author may merge or enable auto-merge. |
| 55 | +- **Author is an external contributor** — the approver is responsible for merging. |
| 56 | + |
| 57 | +### PR scope |
| 58 | + |
| 59 | +Keep PRs focused on one logical change. Smaller, well-scoped PRs are easier to review, faster to merge, and safer to revert if needed. |
| 60 | + |
| 61 | +### Merge queue |
| 62 | + |
| 63 | +All PRs merge through GitHub's [merge queue](https://docs.github.com/en/repositories/configuring-branches-and-merges-in-your-repository/configuring-pull-request-merges/managing-a-merge-queue). After approval, PRs enter the queue, which runs CI against the latest `main` before landing. This ensures that every commit on `main` has passed the full test suite. |
| 64 | + |
| 65 | +## Decision-Making |
| 66 | + |
| 67 | +- **Day-to-day changes** (bug fixes, small features): lazy consensus via PR review. If a PR is approved and CI passes, it can be merged. |
| 68 | +- **Significant changes** (new core abstractions, new backends, breaking API changes): open a GitHub issue for discussion before submitting a PR. These changes should receive broader review from maintainers and relevant code owners. |
| 69 | +- **Disputes**: escalate to maintainers. If consensus cannot be reached, the project lead makes the final call. |
| 70 | + |
| 71 | +## Releases |
| 72 | + |
| 73 | +Maintainers hold release authority. The full release process — including cadence, versioning, and automation — is documented in [RELEASE.md](RELEASE.md). |
| 74 | + |
| 75 | +## Communication |
| 76 | + |
| 77 | +- **GitHub Issues and Pull Requests** — code-related decisions and technical discussion |
| 78 | +- **GitHub Discussions** — broader topics, questions, and ideas |
| 79 | + |
| 80 | +All community interactions are subject to the [Code of Conduct](CODE_OF_CONDUCT.md). |
0 commit comments