Governance¶
Model¶
Single-maintainer steward. The project is owned and decided
by one maintainer (see MAINTAINERS.md). This document exists so
contributors and downstream consumers understand exactly how
decisions are made, how to influence them, and what guarantees
exist.
Decision-making¶
| Decision class | Process | Veto |
|---|---|---|
| Bug fix | Open PR, maintainer reviews + merges. Tests required. | Maintainer |
| Feature addition | Open issue first to scope. Then PR. Larger changes need an RFC in docs/operations/. |
Maintainer |
| Breaking change | RFC in docs/operations/RFC_<topic>.md + 2-week comment window + migration script + at least one minor-version deprecation. |
Maintainer (with public reasoning) |
| Security policy | .github/SECURITY.md is the canonical reference. Disclosure-key rotation follows docs/security/KEY_ROTATION.md. |
Maintainer + 30-day public notice |
| Dependency change | Pre-commit + CI must stay green. New runtime deps require RFC. | Maintainer |
| Release | Maintainer cuts tags. Convention: signed annotated tag, Cosign-signed SBOM, SLSA L3 provenance. | Maintainer |
Contribution flow¶
- Issue for non-trivial work. Confirm scope before coding.
- Branch off
main:feat/<scope>,fix/<scope>,docs/<scope>, etc. - PR with description following the template:
- Summary (1–3 bullets)
- Test plan (checklist)
- Trailing Euxis signature block (required by
pr-signature.yml) - CI must pass before merge. Pre-commit hooks must not be
bypassed (
--no-verifyis rejected by the pre-push hook). - Review by the maintainer. Squash-merge is the project
default; merge-commit only for release PRs that need history
preserved (e.g.,
feat/v0.X.YYYaggregate PRs). - Commit signing is mandatory: SSH or GPG. Unsigned commits are rejected at push.
See CONTRIBUTING.md for full code-style + commit-message
requirements.
RFC process¶
For breaking changes or substantial new features:
- Create
docs/operations/RFC_<short-name>.mdwith sections: - Summary (one paragraph)
- Motivation (why now, what's broken without it)
- Detailed design (concrete file paths, API shapes)
- Backwards compatibility (what breaks, migration path)
- Alternatives considered (with reasons rejected)
- Unresolved questions
- Open a PR labelled
rfcagainstmain. - Comment window: 14 days minimum.
- Maintainer renders a decision (accept / accept-with-changes / reject) with public reasoning in the PR.
- Accepted RFCs are merged as-is to
docs/operations/and become the implementation reference.
Active and historical RFCs are linked from
docs/operations/README.md.
Code of conduct¶
Standard expectations: be kind, assume good faith, focus on the
work. Discriminatory or harassing behaviour is grounds for
permanent block. Report incidents to the maintainer via the
security disclosure channel ([email protected],
encrypted to the WKD-published GPG key).
Forking¶
The project is MIT-licensed; fork freely. If your fork diverges substantially and gains its own community, please rename it to avoid downstream confusion ("dotfiles-X" or similar).
Sustainability¶
The single-maintainer model has known weaknesses (bus factor, review bandwidth, perspective). The project mitigates these by:
- Comprehensive automation: 75+ CI checks, pre-commit hooks, shellcheck/shfmt/typos enforcement.
- Documented architecture:
STRUCTURE.md,scripts/README.md,architecture/,operations/HARD_AUDIT_2026.md. - Cryptographic supply chain: Cosign-signed SBOMs, SLSA L3 provenance, signed commits, WKD-published disclosure key.
- Permissive license: MIT — anyone can fork and continue.
- Active issue triage: targeted weekly cadence.
When the project gains regular contributors, this document will be updated to reflect the shared-maintainer model.
Reference¶
- OpenSSF Best Practices criteria — this governance model is designed to satisfy the "passing" tier.
- CNCF Project Governance template — adapted for solo maintainership.