Repository navigation
docs: add GOVERNANCE.md and MAINTAINERS.md, link them from README and CONTRIBUTING - #495
Merged
Merged
Conversation
… CONTRIBUTING GOVERNANCE.md sets out the three roles (contributor, port maintainer, core maintainer), how merge and publish rights are earned, lazy consensus with core-maintainer approval for the model format, ADRs and releases, the creator's scoped tie-break and veto, ownership of the org, namespaces and trademark, succession, and stepping down. MAINTAINERS.md lists the creator as the sole maintainer, every port and area as maintainer wanted, and today's registry owners.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What Changed
GOVERNANCE.md: defines three roles (contributor, port maintainer, core maintainer); how rights are earned (about 5 merged PRs and 2 months of reviews for port maintainer, with separate publish rights for a port's registry packages); lazy-consensus decisions, with model-format, ADR, compatibility-policy and release changes needing core-maintainer approval; the creator's tie-break and veto, limited to the model format, ADRs and releases; ownership of the GitHub org, package namespaces and trademark staying with Doug Mealing LLC; and a written succession clause for when the creator steps away.MAINTAINERS.md: lists core maintainers, the maintained areas (all currently "Maintainer wanted"), and the registry owners per port (npm, Maven Central, NuGet, PyPI), with co-owners to be added as they earn it.README.md(contributing section) andCONTRIBUTING.md(intro and review step).Policy choices for review (beyond what the positioning reports state)
GOVERNANCE.md
MAINTAINERS.md
14. The 11 areas, including Kotlin as its own area separate from Java, and spec/ + fixtures/ as one area that always needs core approval.
15. Registry owners as read on 2026-10-28: npm user dougmealing on all 14 published packages; PyPI Owner dougmealing; NuGet organization
metaobjects; Maven Central com.metaobjects via the creator's Sonatype Central account and GPG key; GitHub org has one member, dmealing.Good-first-issues filed (label: good first issue)
#485, #486, #487, #488, #489, #490, #491, #492, #493, #494. They are GitHub issues only; this PR does not change code for them.
Skipped from the report's list:
meta genon an unknown attribute: it now warns and exits 0 (cli/src/commands/gen.ts:195-204); making it fail changes exit codes for adopters, a maintainer call. No "audit file" exists.Validation: one no-mistakes run (docs-only tier: test, lint, document and CI skipped). Review found 3 warnings: the tie-break scope conflict was fixed by the pipeline; the veto and the stepping-down, paid-work and no-CLA text were kept by maintainer decision and are listed above for review.
Validation
Risk Assessment
✅ Low: Docs-only change. The round-1 fix is verified: the tie-break is scoped to the model format, ADRs and releases, and an even split elsewhere or during succession leaves the status quo. The linked files, paths and package names in the new text exist in the repo. The listed policy choices are deliberate maintainer decisions.
Testing
Pipeline
Updates from git push no-mistakes
✅ **Intent** - passed
✅ No issues found.
✅ **Rebase** - passed
✅ No issues found.
GOVERNANCE.md:82- Two sections give conflicting scope for the creator's tie-break. Line 81-82 says that when core maintainers split evenly on any disagreement, 'the creator decides'. Line 104-110 says the tie-break is limited to three subjects (model format, ADRs, releases), and that elsewhere the creator has one vote like any other core maintainer. The intent requires the tie-break and its scope to be stated. A reader cannot tell which sentence governs a 1-1 split over, say, a port-area dispute. Fix: scope line 82 to those three subjects, or point to the tie-break section and say what happens on an even split elsewhere. The succession step at line 139 says the tie-break passes 'to a majority vote', which is not a tie-break and does not resolve an even split.GOVERNANCE.md:111- The creator veto is a component the intent does not require. The intent asks for 'the creator's tie-break and its scope'. A unilateral veto over the model format, ADRs and releases is a separate and stronger power. It lets the creator overrule a core-maintainer majority, so a tie-break is never needed on those subjects. It also undercuts the second-maintainer assurance that the document exists to give. Smallest honest remedy: remove the Veto bullet (and the 'creator's veto does not pass' clause at line 148), keep only the scoped tie-break. If the veto is deliberate, the author should confirm it.GOVERNANCE.md:151- The change adds binding policy beyond the intent's list (roles, how rights are earned, merge and publish rights, lazy consensus, model-format and ADR approval, tie-break, ownership, succession). None of these is in the intent. The 'Stepping down and removal' section (line 151-174) adds inactivity rules, removal rules and an emergency access-suspension power with a two-week review. The Ownership section adds a 'Paid work or sponsorship' clause (line 129) and a statement that there is no copyright assignment and no CLA (line 124-127). The CLA statement is a new licensing position, and CONTRIBUTING.md line 127-130 only says contributions are licensed under Apache-2.0. Smallest remedy: remove these components, or have the author confirm each one.🔧 Fix applied.
2 warnings still open:
GOVERNANCE.md:111- The creator veto is a component the intent does not require. The intent asks for 'the creator's tie-break and its scope'. A unilateral veto over the model format, ADRs and releases is a separate and stronger power. It lets the creator overrule a core-maintainer majority, so a tie-break is never needed on those subjects. It also undercuts the second-maintainer assurance that the document exists to give. Smallest honest remedy: remove the Veto bullet (and the 'creator's veto does not pass' clause at line 148), keep only the scoped tie-break. If the veto is deliberate, the author should confirm it.GOVERNANCE.md:151- The change adds binding policy beyond the intent's list (roles, how rights are earned, merge and publish rights, lazy consensus, model-format and ADR approval, tie-break, ownership, succession). None of these is in the intent. The 'Stepping down and removal' section (line 151-174) adds inactivity rules, removal rules and an emergency access-suspension power with a two-week review. The Ownership section adds a 'Paid work or sponsorship' clause (line 129) and a statement that there is no copyright assignment and no CLA (line 124-127). The CLA statement is a new licensing position, and CONTRIBUTING.md line 127-130 only says contributions are licensed under Apache-2.0. Smallest remedy: remove these components, or have the author confirm each one.⏭️ **Test** - skipped
Step was skipped.
⏭️ **Document** - skipped
Step was skipped.
⏭️ **Lint** - skipped
Step was skipped.
✅ **Push** - passed
✅ No issues found.