ReRouted is an independent personal project maintained by @gitcommit90. This document defines how the public repository is run so every change is reviewable, tested, versioned, and released the same way.
| Role | Who | Authority |
|---|---|---|
| Maintainer | Repository owner (gitcommit90) |
Merge to main, publish releases, change policy, close issues/PRs |
| Agent / automation | Local maintainers and CI | May open branches, run tests, draft PRs; may not publish a release without following release-checklist.md |
| External contributors | Anyone else | Issues and sanitized reports only until external PRs are explicitly enabled in CONTRIBUTING.md |
There is no separate legal entity, community board, or multi-maintainer vote. Policy lives in this repository. Host-local packaging credentials and machine aliases stay outside git (see maintainer handoff on the build hosts, not in this repo).
| Artifact | Canonical location |
|---|---|
| Product code | main on https://github.com/gitcommit90/rerouted |
| Public site | https://rerouted.dev (deployed from a versioned snapshot of main, never a dirty worktree) |
| Version number | package.json version field |
| User-facing history | CHANGELOG.md plus the GitHub Release body for that tag |
| Ship procedure | release-checklist.md and release-lifecycle.md |
| Architecture | architecture.md |
| Security contact | SECURITY.md |
- Default branch:
mainonly. There is no long-liveddevelop. - Work branches: short-lived, named for intent:
feat/<slug>— user-visible capabilityfix/<slug>— defectdocs/<slug>— documentation onlychore/<slug>— tooling, governance, CI, repo hygienerefactor/<slug>— internal structure without intended behavior changerelease/<version>— optional packaging-only branch (usually unnecessary)
- Merge method: squash merge preferred for feature work so
mainstays linear and each PR becomes one reviewable commit. Merge commits are allowed when preserving multi-commit history is intentional. - Delete on merge: remote head branches are deleted after merge.
- No direct force-push to
main. History rewrites of published tags or releases require an explicit maintainer decision.
No change lands on main without:
- A focused description of the user-visible problem and outcome (PR body or commit body for direct maintainer merges).
- Tests for behavioral changes (
tests/*.test.js) or an explicit justification when the change is docs/governance only. npm testgreen on the branch (local and GitHub Actions).git diff --checkclean.- No secrets, private prompts, real OAuth material, generated DMGs/ZIPs, or host-only files (
AGENTS.mdand similar).
UI changes should include current captures when the control plane layout changes in a way users would notice.
- Semantic versioning on
package.json: MAJOR for breaking local API or data migrations users must handle; MINOR for backward-compatible features; PATCH for fixes and small safe improvements. - Every shipped macOS/Linux build has a unique version. Never rebuild and republish the same version number with different bits.
- A release is not “done” when code merges. It is done only when release-checklist.md is complete: signed notarized macOS DMG + updater ZIP, Linux CLI tarball, published GitHub Release, update-feed check, and install verification.
- Draft and prerelease GitHub Releases are not update channels for the stable app.
| Surface | Use for |
|---|---|
| GitHub Issues | Bugs, feature requests, questions (sanitized) |
| GitHub Security Advisories | Vulnerabilities only |
GitHub Releases + CHANGELOG.md |
What shipped |
| https://rerouted.dev | Product marketing and download entry |
| Pull requests | Maintainer (and future external) code review |
Maintainers should keep these GitHub settings true:
- Default branch
main - Delete head branches on merge: on
- Squash merge: on (preferred)
- Merge commit / rebase: optional
- Wiki: off (docs live in-repo)
- Issues: on
- Secret scanning + push protection: on
- Actions: run tests on
pushtomainand on pull requests - Branch protection on
main: require status check Tests / test when the plan allows required checks; disallow force-push
- GitHub repository name:
rerouted(lowercase). - Canonical maintainer clone path on ProxUI:
/root/rerouted. - Product display name: ReRouted.
- npm package name:
@gitcommit90/rerouted. - macOS app bundle / DMG product name:
ReRouted.
Do not invent alternate public product names. Side folders such as release worktrees, site snapshots, or historical sandboxes are not the product root.
Governance changes land through the same branch + test + merge path as code (docs-only PRs still use the PR template). Material policy shifts (accepting external PRs, changing license, moving ownership) require an explicit maintainer commit message and a CHANGELOG.md entry under the next release.