# 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@proton.me - **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.