Maintainer criteria

How merge rights are earned, what they commit you to, and how to step back. This page is deliberately explicit: an unwritten path to maintainership is a path only insiders can walk.

Current maintainers and stewards are listed in MAINTAINERS.md.


What a maintainer is

A contributor with merge rights on the main repository, trusted to:

  1. Review and merge changes within their area of competence
  2. Triage incoming issues with consistent priority labels
  3. Vote on RFCs — one maintainer plus one community sponsor are required to merge one
  4. Uphold and enforce the Code of Conduct
  5. Represent the project responsibly in public

Maintainers are not employees. They are not required to respond on a schedule. They are expected to set a realistic capacity and to step back formally rather than disappear.


The path

Step 1 — Earn trust through contribution

There is no fixed threshold. A typical path:

Step 2 — Demonstrate judgment in design discussions

Beyond shipping code:

These signals matter more than line counts. A contributor who merges a lot of code but always defers on architecture is not yet ready.

Step 3 — Self-nominate or be nominated

Either works, and self-nomination is genuinely welcome — open an issue titled Maintainer nomination: @<handle> with a brief case: merged contributions, RFCs participated in, areas of focus, and available bandwidth.

Step 4 — The vote

Until a technical steering committee exists (targeted v0.7+), the project lead approves new maintainers after soliciting feedback from existing maintainers and stewards. After the TSC exists, it votes by simple majority; the project lead retains a nomination right but not a veto.

The vote is public. Each vote and its brief rationale is posted in the nomination issue. Confidential concerns may be raised privately with the project lead, who summarizes them anonymously in the public thread.

Step 5 — Onboarding

An accepted maintainer is added to MAINTAINERS.md and to the GitHub team with merge rights, and is given access to the security-issue channel.


What maintainers commit to

Time

Quality

Conduct


What maintainers do not commit to

Stated explicitly, because unstated expectations are how maintainers burn out. Maintainers are not expected to:


Areas of competence

Maintainers self-declare areas in MAINTAINERS.md. Reviewing and merging outside your declared areas requires a co-review from someone inside them.

Area Code
Capture & Replay src/novafabric/capture/, src/novafabric/replay/
Asset Registry src/novafabric/spec/, src/novafabric/registry/
Lineage & Evidence src/novafabric/lineage/, src/novafabric/evidence/
CLI src/novafabric/cli/
Adapters & Integrations src/novafabric/adapters/, integrations/
Server & Metadata Store src/novafabric/server/, src/novafabric/metadata_store/
Dashboard web/
Documentation & Spec docs/, schemas/, RFC stewardship

Stepping back

Maintainers may step back at any time:

  1. Open an issue announcing the change
  2. Update MAINTAINERS.md, or ask another maintainer to
  3. Optionally accept emeritus status — recognized as a former maintainer without active responsibilities

Emeritus maintainers keep commit-history credit and may rejoin without re-applying.


Removing a maintainer

A maintainer may be removed for:

Removal is rare. The default for an inactive maintainer is emeritus status, not removal. Removal for cause is reserved for serious cases and is documented privately.


Don't want merge rights?

Many excellent contributors would rather ship code than own review duties. They are recognized as stewards in MAINTAINERS.md. Stewards:

Steward status is granted on the same informal criteria: sustained quality contribution and good judgment in design discussions.


Growth targets

Honest about where the project is: it is currently led by a single founder and is actively recruiting. These are targets, not accomplishments.

Phase Maintainer target Steward target
v0.2 → v0.3 (project lead) 1 (founder) + 1–2 stewards 2–3
v0.3 → v0.5 (recruiting) 1 + 2 external 3–5
v0.5 → v0.7 (foundation-ready) 3–4 5–7
v0.7+ (TSC) TSC of 3–5, maintainer pool of 5–10 10+

See also