Skip to content

Commit db23f58

Browse files
authored
Governance: issue-first intake, Discussions retired (#512)
* docs(governance): issue-first intake, retire Discussions Features and designs now enter as issues (feature/RFC forms, auto-labelled needs-triage); the accepted label is the gate before implementation effort, and a merged RFC sanctions its implementation PRs directly. The trivial fast-lane stays for small, obviously-correct fixes. Discussions are retired as an inbound channel; the four open threads were migrated to issues #508-#511 before the setting was turned off. Internal review mechanics (approval counts, maintainer process references) are no longer part of the public surface. Also corrects two CONTRIBUTING inaccuracies: CI checks openapi.json for drift but never regenerates it, and protoc is a required build dependency. * docs(rfcs): repoint RFC-0029 provenance to migrated issue Discussion #439 became issue #509 when Discussions were retired; the old link no longer resolves. * docs(governance): needs-rfc replaces accepted, not stacks on it The one-status-label rule left size-L triage ambiguous: the rfcs README diagram showed accepted and needs-rfc together. needs-rfc now explicitly replaces accepted while the design is outstanding and the issue returns to accepted when the RFC merges.
1 parent 93c4acb commit db23f58

10 files changed

Lines changed: 221 additions & 140 deletions

File tree

.github/ISSUE_TEMPLATE/bug_report.yml

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -6,13 +6,13 @@ body:
66
- type: markdown
77
attributes:
88
value: |
9-
Issues are for **reporting problems** — concrete, reproducible bugs.
10-
For ideas, feature requests, or questions, please use
11-
[Discussions](../../discussions) instead.
12-
For a security vulnerability, follow [SECURITY.md](../../blob/main/SECURITY.md) — do **not** file it here.
9+
This form is for **reporting problems** — concrete, reproducible bugs.
10+
For an idea or feature request, use the
11+
[feature proposal form](https://github.com/ModernRelay/omnigraph/issues/new/choose) instead.
12+
For a security vulnerability, follow [SECURITY.md](https://github.com/ModernRelay/omnigraph/blob/main/SECURITY.md) — do **not** file it here.
1313
1414
A maintainer will triage this; once labelled **`accepted`** it's open for a pull request
15-
(see [GOVERNANCE.md](../../blob/main/GOVERNANCE.md)).
15+
(see [GOVERNANCE.md](https://github.com/ModernRelay/omnigraph/blob/main/GOVERNANCE.md)).
1616
- type: textarea
1717
id: what-happened
1818
attributes:

.github/ISSUE_TEMPLATE/config.yml

Lines changed: 2 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,7 @@
1-
# Issues are for problem reports only. Disable blank issues so everything is
2-
# routed: bugs through the form, everything else to Discussions / SECURITY.md.
1+
# Issues are the only inbound channel (see GOVERNANCE.md). Blank issues stay
2+
# disabled so every report lands on a form; security goes to SECURITY.md.
33
blank_issues_enabled: false
44
contact_links:
5-
- name: 💡 Idea, feature request, or RFC
6-
url: https://github.com/ModernRelay/omnigraph/discussions
7-
about: Propose features and designs in Discussions. RFCs graduate from there into a docs/rfcs/ pull request.
8-
- name: ❓ Question or help
9-
url: https://github.com/ModernRelay/omnigraph/discussions
10-
about: Ask in Discussions — questions are not tracked as Issues.
115
- name: 🔒 Security vulnerability
126
url: https://github.com/ModernRelay/omnigraph/blob/main/SECURITY.md
137
about: Report security issues privately per SECURITY.md — never as a public Issue.
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
name: 💡 Feature proposal
2+
description: Propose a change. A maintainer triages it; work starts once it is labelled `accepted`.
3+
labels: ["feature", "needs-triage"]
4+
body:
5+
- type: markdown
6+
attributes:
7+
value: |
8+
Every change starts as an issue (see [GOVERNANCE.md](https://github.com/ModernRelay/omnigraph/blob/main/GOVERNANCE.md)).
9+
A maintainer triages this: **`accepted`** is the green light for a PR, and a
10+
larger design gets **`needs-rfc`** and goes through an RFC first
11+
([docs/rfcs/README.md](https://github.com/ModernRelay/omnigraph/blob/main/docs/rfcs/README.md)).
12+
Trivial fixes (typos, obvious small corrections) can skip the issue and go straight to a PR.
13+
- type: textarea
14+
id: problem
15+
attributes:
16+
label: Problem
17+
description: What can't you do today, or what costs too much? Concrete scenarios beat abstractions.
18+
validations:
19+
required: true
20+
- type: textarea
21+
id: proposal
22+
attributes:
23+
label: Proposed change
24+
description: What should exist? If it adds user-visible surface (CLI, API, query/schema language), sketch it.
25+
validations:
26+
required: true
27+
- type: textarea
28+
id: alternatives
29+
attributes:
30+
label: Alternatives considered
31+
description: Other ways to solve it, including doing nothing.
32+
validations:
33+
required: false
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
name: 📐 Design / RFC proposal
2+
description: Propose a design-level change. The issue is accepted first; the RFC document follows as its own PR.
3+
labels: ["rfc", "needs-triage"]
4+
body:
5+
- type: markdown
6+
attributes:
7+
value: |
8+
For design-level changes: new user-facing surface, on-disk or wire formats,
9+
new substrate dependencies, anything irreversible. Do **not** write the RFC
10+
document yet — this issue gets `accepted` first, so nobody invests in a
11+
design a maintainer hasn't agreed should exist. Once accepted (and labelled
12+
`needs-rfc`), open an RFC PR per
13+
[docs/rfcs/README.md](https://github.com/ModernRelay/omnigraph/blob/main/docs/rfcs/README.md);
14+
the merged RFC then sanctions the implementation PRs, and this issue tracks them.
15+
- type: textarea
16+
id: problem
17+
attributes:
18+
label: Problem
19+
description: What is wrong or missing, and why does it matter?
20+
validations:
21+
required: true
22+
- type: textarea
23+
id: direction
24+
attributes:
25+
label: Proposed design direction
26+
description: The shape of the solution — enough to judge whether the problem is worth an RFC, not the full design.
27+
validations:
28+
required: true
29+
- type: textarea
30+
id: scope
31+
attributes:
32+
label: Blast radius
33+
description: What does this touch — storage format, wire protocol, query language, dependencies? What becomes hard to reverse?
34+
validations:
35+
required: true

.github/PULL_REQUEST_TEMPLATE.md

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,6 @@
11
<!--
22
Thanks for contributing! See CONTRIBUTING.md and GOVERNANCE.md.
3-
A substantive PR needs a backing accepted issue or accepted RFC.
4-
Maintainers: your internal process applies; the link requirement below
5-
is for external contributions.
3+
A substantive PR needs a backing accepted issue or merged RFC.
64
-->
75

86
## What & why
@@ -14,7 +12,7 @@
1412
<!-- Pick one. A substantive change needs (1) or (2). -->
1513

1614
- [ ] Fixes an **accepted** issue: Closes #
17-
- [ ] Implements / is an **accepted** RFC: <link to docs/rfcs/NNNN-*.md>
15+
- [ ] Is an RFC PR, or implements a **merged** RFC: <link to docs/rfcs/NNNN-*.md>
1816
- [ ] **Trivial fast-lane** (typo / docs / dependency bump / comment / one-line CI) — no issue/RFC required
1917

2018
## Checklist

CONTRIBUTING.md

Lines changed: 26 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -7,26 +7,34 @@ rules and decision authority behind it live in [GOVERNANCE.md](GOVERNANCE.md).
77

88
| I want to… | Go to | Notes |
99
|---|---|---|
10-
| **Report a bug** or wrong behavior | **[Open an Issue](../../issues/new/choose)** | Concrete and reproducible. A maintainer triages it; once labelled **`accepted`** it's open for a PR. |
11-
| **Suggest a feature / share an idea / ask** | **[Start a Discussion](../../discussions)** | Ideas and questions live here, not in Issues. |
12-
| **Propose a design / RFC** | **An RFC pull request** | Anyone can copy the public template and declare `Author track: Public contribution` — see [docs/rfcs/README.md](docs/rfcs/README.md). A maintainer merging a public RFC is acceptance; maintainer design series use their explicit status lifecycle. |
13-
| **Fix something / implement a change** | **A pull request** | Must link an `accepted` issue or an accepted RFC — unless it's trivial (below). |
10+
| **Report a bug** or wrong behavior | **[Open an Issue](../../issues/new/choose)** — bug form | Concrete and reproducible. A maintainer triages it; once labelled **`accepted`** it's open for a PR. |
11+
| **Propose a feature / share an idea** | **[Open an Issue](../../issues/new/choose)** — feature form | A maintainer triages it. **`accepted`** means a PR may follow; a larger design gets **`needs-rfc`** and goes through an RFC first. |
12+
| **Propose a design / RFC** | **An Issue first**, then an RFC pull request | Get the issue `accepted` before investing in the RFC document. A maintainer merging the RFC PR is acceptance; the merged RFC then sanctions implementation PRs — see [docs/rfcs/README.md](docs/rfcs/README.md). |
13+
| **Fix something / implement a change** | **A pull request** | Must link an `accepted` issue or a merged RFC — unless it's trivial (below). |
1414
| **Report a security vulnerability** | **[SECURITY.md](SECURITY.md)** | Do **not** open a public Issue. |
1515

16+
GitHub Discussions are not used — Issues are the only inbound channel.
17+
1618
### When can I just open a PR?
17-
The **trivial fast-lane** — open directly, no prior issue/RFC needed: typo and
18-
wording fixes, doc corrections, dependency bumps, comment fixes, obvious
19-
one-line CI tweaks. Anything more substantial needs a backing `accepted` issue
20-
or accepted RFC first, so the *why* is agreed before the *how* is reviewed. A PR
19+
The **trivial fast-lane** — open directly, no prior issue/RFC needed, when the
20+
change is clearly broken-fixing with small blast radius and no design impact:
21+
typo and wording fixes, doc corrections, dependency bumps, comment fixes,
22+
obvious one-line CI tweaks. **If you cannot tell trivial from real, it is real
23+
— open the issue.** Anything more substantial needs a backing `accepted` issue
24+
or merged RFC first, so the *why* is agreed before the *how* is reviewed. A PR
2125
that turns out to be non-trivial will be redirected — that's about process, not
2226
the merit of the change.
2327

24-
> **Maintainers (ModernRelay team)** follow a separate internal process and are
25-
> not bound by the intake rules above. Everyone is bound by review, branch
26-
> protection, and CI.
27-
2828
## Development
2929

30+
Building requires the Rust stable toolchain and `protoc` (the Protocol Buffers
31+
compiler — a build dependency of the storage substrate):
32+
33+
```bash
34+
brew install protobuf # macOS
35+
sudo apt-get install -y protobuf-compiler libprotobuf-dev # Debian/Ubuntu
36+
```
37+
3038
```bash
3139
cargo build --workspace
3240
cargo test --workspace
@@ -38,18 +46,15 @@ integration tests.
3846
### OpenAPI spec
3947

4048
`openapi.json` is a committed artifact generated from the Utoipa annotations in
41-
`crates/omnigraph-server`. For PRs opened from this repository, a CI job
42-
regenerates it automatically and commits the updated file back to the PR
43-
branch. For PRs from forks (where CI cannot push), run the regeneration
44-
manually:
49+
`crates/omnigraph-server`. CI never regenerates or commits it — it only checks
50+
for drift and fails the build if the committed copy disagrees with the source.
51+
When your change touches the server API surface, regenerate locally and commit
52+
the result in the same PR:
4553

4654
```bash
4755
OMNIGRAPH_UPDATE_OPENAPI=1 cargo test -p omnigraph-server --test openapi openapi_spec_is_up_to_date
4856
```
4957

50-
The workspace test run fails if the committed `openapi.json` drifts from what
51-
the source generates.
52-
5358
### Cargo features
5459

5560
`omnigraph-server` has an optional `aws` feature that pulls in the AWS
@@ -68,8 +73,8 @@ CI runs both.
6873

6974
## Pull Requests
7075

71-
- **Link the backing issue or RFC** (`Closes #123`, or reference the RFC) — or
72-
mark the PR as trivial per the fast-lane.
76+
- **Link the backing `accepted` issue or merged RFC** (`Closes #123`, or
77+
reference the RFC) — or mark the PR as trivial per the fast-lane.
7378
- Keep changes focused; one logical change per PR.
7479
- Include tests for behavior changes when practical.
7580
- Update public docs when the user-facing surface changes.

0 commit comments

Comments
 (0)