Files
NotAlterra/GOVERNANCE.md
T

112 lines
4.3 KiB
Markdown

# Governance
NotAlterra is maintained by a single developer. This document describes how
decisions are made, how access is controlled, and what happens if the
maintainer becomes unavailable.
## Decision Making
| Area | Process |
|---|---|
| Feature scope | Maintainer decides. Community input via issues and discussions is encouraged but non-binding. |
| Code review | All changes pass through CI (`cargo check`, `cargo test`, `cargo doc`). Human review is performed by the maintainer before signing. |
| Release | Signed GPG tag by the maintainer. No automated tag creation. CI builds, packages, and attaches provenance. |
| Policy documents | Maintainer drafts. Significant changes are committed with justification in the commit message. |
| Security issues | Reported via email. Patched within 48 hours. Disclosed publicly after patch release. |
## Maintainer
- **GitHub**: [forkless](https://github.com/forkless)
- **Contact**: forkless@protonmail.com
- **GPG key**: [314BB48A3C72D8EC2830B8BED2B0DF63E2CBEA16](https://github.com/forkless.gpg)
## Bus Factor
NotAlterra has a bus factor of one — only the maintainer holds the GPG key
and push access to the repository.
### Proposed Mitigation
An emergency signing key stored on a USB stick in a sealed envelope, held
by a non-technical trusted person. The envelope also contains the passphrase.
The key is independent from the maintainer's daily key and revocable if
compromised.
The envelope is to be opened only if the maintainer is unreachable for 90+
consecutive days with no public activity. A technical contact would be
designated to sign releases using the emergency key.
*This mitigation is not yet in place — documented here as intent.*
### Access Recovery Plan
If the maintainer becomes unavailable for an extended period (unreachable
for 90+ days with no public activity), the following steps are available to
the community:
1. **Fork the repository.** All code, documentation, and build scripts are
publicly available under the MIT license. The project can be continued
under new maintainership.
2. **Contact GitHub Support.** Repository transfer can be requested through
GitHub's deceased user policy or owner unreachability process.
3. **Replace the GPG key.** The signing key belongs to the maintainer and
cannot be transferred. A new maintainer should generate a new key, add
it to the CI secrets, and update this document.
4. **Re-establish provenance.** SLSA provenance will need to be regenerated
under the new maintainer's identity. Historical provenance for prior
releases remains valid.
### What the Maintainer Periodically Verifies
- GPG key expiration (checked quarterly).
- CI pipeline is functional (every commit push triggers it).
- Backup of repository and signing subkey exists in offline storage.
## Code of Conduct
Be respectful. Be constructive. Assume good intent.
This project is maintained by someone learning as they go. Questions are
welcome. Patience is appreciated. Kindness is non-negotiable.
## Release Checklist
CI now creates releases as drafts — binaries are built and uploaded but
not published. The maintainer tests the draft binaries before publishing.
Before signing a release tag, the maintainer verifies:
- [ ] Impact analysis completed — all call sites for new/changed functions identified and updated
- [ ] `cargo test --workspace` — all tests pass (including new integration tests for features shipped in this release)
- [ ] `python3 tests/_check.py` — 100% doc coverage
- [ ] CHANGELOG.md has an entry for the new version
- [ ] `git status` — no uncommitted changes
- [ ] `_release.md` is updated for the new version
After the CI run completes:
- [ ] Download draft binaries from the GitHub releases page
- [ ] Test on target platform(s) — basic menu flow, backup, restore, inspect
- [ ] Click **Publish release** on GitHub when satisfied
## Roadmap
Planned changes for upcoming releases, ordered by priority.
| Target | Item |
|--------|------|
| v0.4.0 | ✅ All v0.4.0 items completed — released 2026-06-03 |
| v0.5.0 | TBD — see GitHub issues for planned features |
Items may shift between releases depending on feedback and urgency.
## Changes to This Document
This document is versioned with the repository. Proposed changes should be
filed as pull requests. The maintainer has final approval.
Last updated: 2026-06-02.