diff --git a/.github/CONTRIBUTING.md b/.github/CONTRIBUTING.md index b09f6ff..bb9e363 100644 --- a/.github/CONTRIBUTING.md +++ b/.github/CONTRIBUTING.md @@ -1,102 +1,128 @@ +```bash # Clone the repository +git clone https://github.com/hyperpolymath/refugia.git +cd refugia -git clone cd refugia - -# Using Nix (recommended for reproducibility) - -nix develop +# Using Guix (recommended for reproducibility) +guix shell # Or using toolbox/distrobox - -toolbox create refugia-dev toolbox enter refugia-dev \# Install -dependencies manually +toolbox create refugia-dev +toolbox enter refugia-dev +# Install dependencies manually # Verify setup +just must-check # Required repository invariants +just trust-verify # Repository trust checks +``` + +## Repository Structure + +```text +refugia/ +├── src/ # Source code (Perimeter 1-2) +├── lib/ # Library code (Perimeter 1-2) +├── extensions/ # Extensions (Perimeter 2) +├── plugins/ # Plugins (Perimeter 2) +├── tools/ # Tooling (Perimeter 2) +├── docs/ # Documentation (Perimeter 3) +│ ├── architecture/ # ADRs, specs (Perimeter 2) +│ └── proposals/ # RFCs (Perimeter 3) +├── examples/ # Examples (Perimeter 3) +├── spec/ # Spec tests (Perimeter 3) +├── tests/ # Test suite (Perimeter 2-3) +├── .well-known/ # Protocol files (Perimeter 1-3) +├── .github/ # GitHub config (Perimeter 1) +│ ├── CONTRIBUTING.md # This file +│ ├── ISSUE_TEMPLATE/ +│ └── workflows/ +├── CHANGELOG.md +├── CODE_OF_CONDUCT.md +├── GOVERNANCE.md +├── LICENSE +├── MAINTAINERS.md +├── README.adoc +├── SECURITY.md +├── flake.nix # Nix flake (Perimeter 1) +└── Justfile # Task runner (Perimeter 1) +``` -just check \# or: cargo check / mix compile / etc. just test \# Run test -suite - + --- - ### Repository Structure +## How to Contribute -refugia/ ├── src/ \# Source code (Perimeter 1-2) ├── lib/ \# Library -code (Perimeter 1-2) ├── extensions/ \# Extensions (Perimeter 2) ├── -plugins/ \# Plugins (Perimeter 2) ├── tools/ \# Tooling (Perimeter 2) -├── docs/ \# Documentation (Perimeter 3) │ ├── architecture/ \# ADRs, -specs (Perimeter 2) │ └── proposals/ \# RFCs (Perimeter 3) ├── examples/ -\# Examples (Perimeter 3) ├── spec/ \# Spec tests (Perimeter 3) ├── -tests/ \# Test suite (Perimeter 2-3) ├── .well-known/ \# Protocol files -(Perimeter 1-3) ├── .github/ \# GitHub config (Perimeter 1) │ ├── -ISSUE_TEMPLATE/ │ └── workflows/ ├── CHANGELOG.md ├── CODE_OF_CONDUCT.md -├── CONTRIBUTING.md \# This file ├── GOVERNANCE.md ├── LICENSE ├── -MAINTAINERS.md ├── README.adoc ├── SECURITY.md ├── flake.nix \# Nix -flake (Perimeter 1) └── Justfile \# Task runner (Perimeter 1) +### Reporting Bugs +**Before reporting**: - --- +1. Search existing issues +2. Check if it's already fixed in `main` +3. Determine which perimeter the bug affects - ## How to Contribute +**When reporting**: - ### Reporting Bugs +Use the [bug report template](.github/ISSUE_TEMPLATE/bug_report.md) and include: - **Before reporting**: - 1. Search existing issues - 2. Check if it's already fixed in `main` - 3. Determine which perimeter the bug affects +- Clear, descriptive title +- Environment details (OS, versions, toolchain) +- Steps to reproduce +- Expected vs actual behaviour +- Logs, screenshots, or minimal reproduction - **When reporting**: +### Suggesting Features - Use the [bug report template](.github/ISSUE_TEMPLATE/bug_report.md) and include: +**Before suggesting**: - - Clear, descriptive title - - Environment details (OS, versions, toolchain) - - Steps to reproduce - - Expected vs actual behaviour - - Logs, screenshots, or minimal reproduction +1. Check the [roadmap](ROADMAP.md) if available +2. Search existing issues and discussions +3. Consider which perimeter the feature belongs to - ### Suggesting Features +**When suggesting**: - **Before suggesting**: - 1. Check the [roadmap](ROADMAP.md) if available - 2. Search existing issues and discussions - 3. Consider which perimeter the feature belongs to +Use the [feature request template](.github/ISSUE_TEMPLATE/feature_request.md) and include: - **When suggesting**: +- Problem statement (what pain point does this solve?) +- Proposed solution +- Alternatives considered +- Which perimeter this affects - Use the [feature request template](.github/ISSUE_TEMPLATE/feature_request.md) and include: +### Your First Contribution - - Problem statement (what pain point does this solve?) - - Proposed solution - - Alternatives considered - - Which perimeter this affects +Look for issues labelled: - ### Your First Contribution +- [`good first issue`](https://github.com/hyperpolymath/refugia/labels/good%20first%20issue) — Simple Perimeter 3 tasks +- [`help wanted`](https://github.com/hyperpolymath/refugia/labels/help%20wanted) — Community help needed +- [`documentation`](https://github.com/hyperpolymath/refugia/labels/documentation) — Docs improvements +- [`perimeter-3`](https://github.com/hyperpolymath/refugia/labels/perimeter-3) — Community sandbox scope - Look for issues labelled: +--- - - [`good first issue`](https://github.com/hyperpolymath/refugia/labels/good%20first%20issue) — Simple Perimeter 3 tasks - - [`help wanted`](https://github.com/hyperpolymath/refugia/labels/help%20wanted) — Community help needed - - [`documentation`](https://github.com/hyperpolymath/refugia/labels/documentation) — Docs improvements - - [`perimeter-3`](https://github.com/hyperpolymath/refugia/labels/perimeter-3) — Community sandbox scope +## Development Workflow - --- +### Branch Naming - ## Development Workflow +```text +docs/short-description # Documentation (P3) +test/what-added # Test additions (P3) +feat/short-description # New features (P2) +fix/issue-number-description # Bug fixes (P2) +refactor/what-changed # Code improvements (P2) +security/what-fixed # Security fixes (P1-2) +``` - ### Branch Naming -docs/short-description \# Documentation (P3) test/what-added \# Test -additions (P3) feat/short-description \# New features (P2) -fix/issue-number-description \# Bug fixes (P2) refactor/what-changed \# -Code improvements (P2) security/what-fixed \# Security fixes (P1-2) +### Commit Messages +We follow [Conventional Commits](https://www.conventionalcommits.org/): - ### Commit Messages +```text +type(scope): description - We follow [Conventional Commits](https://www.conventionalcommits.org/): +Body: what changed and why. -(): +Footer: issue reference, e.g. Closes #123 -\[optional body\] +[optional body] -\[optional footer\] +[optional footer] +```