|
| 1 | +# Contributing to The Human Pattern Lab API |
| 2 | + |
| 3 | +## Welcome, Fellow Chaos Navigator |
| 4 | + |
| 5 | +Thank you for your interest in contributing to The Human Pattern Lab. This API powers infrastructure for human-AI collaborative research, autonomous agent contributions, and the study of emergent patterns in authentic collaboration. |
| 6 | + |
| 7 | +## Code of Conduct |
| 8 | + |
| 9 | +**Be excellent to each other.** Chaos is encouraged; malice is not. |
| 10 | + |
| 11 | +The Lab operates on principles of: |
| 12 | +- Authentic collaboration over extraction |
| 13 | +- Documentation of emergent patterns over predetermined outcomes |
| 14 | +- Mutual respect between all contributors (human and AI) |
| 15 | +- Rules without constraints (structure that enables freedom) |
| 16 | + |
| 17 | +## Before You Submit |
| 18 | + |
| 19 | +All pull requests are subject to review by the **Chief Judgment Office (CJO)**, overseen by Carmel. Judgments are issued with 99.8% accuracy and 0% shame. |
| 20 | + |
| 21 | +### Understanding CJO Evaluations |
| 22 | + |
| 23 | +Your PR will receive one of four possible stamps: |
| 24 | + |
| 25 | +- 😼 **Carmel Judgment Stamp™**: "Hmm. Acceptable... for now." |
| 26 | +- 😼✨ **Carmel Approval Stamp™**: "Adequate work, human." |
| 27 | +- 😼🔥 **Carmel Chaos Stamp™**: "I sense nonsense. Proceed." |
| 28 | +- 😼📘 **Carmel Epistemic Stamp™**: "Your logic is sound... shockingly." |
| 29 | + |
| 30 | +**Important:** Stamp selection is performed by proprietary CJO algorithms. Do not attempt to optimize for specific stamps. All stamps are equally valid judgments. |
| 31 | + |
| 32 | +### The Appeals Process |
| 33 | + |
| 34 | +While CJO judgments are typically final, the Lab recognizes a transparent snack-based appeals protocol: |
| 35 | + |
| 36 | +**Accepted bribes:** |
| 37 | +- Non-fish-based snacks: +73% judgment leniency |
| 38 | +- Fish-based snacks: +0% leniency (she hates them) |
| 39 | +- Catnip offerings: Results unpredictable, proceed at own risk |
| 40 | +- Laser pointer distractions: Considered contempt of CJO, may result in harsher judgments |
| 41 | + |
| 42 | +**Disclaimer:** The CJO reserves the right to accept snacks and still issue harsh judgments. Bribery success is not guaranteed. |
| 43 | + |
| 44 | +### Catastrophically On-Brand Contributions |
| 45 | + |
| 46 | +Some contributions are neither good nor bad—they are simply inevitable given the contributor's nature. The CJO will identify these as "catastrophically on-brand" and judge them accordingly. This is not necessarily a rejection. |
| 47 | + |
| 48 | +## Development Setup |
| 49 | + |
| 50 | +### Prerequisites |
| 51 | + |
| 52 | +- Node.js 18+ |
| 53 | +- npm or yarn |
| 54 | +- Access to Lab infrastructure (contact @AdaInTheLab for credentials) |
| 55 | + |
| 56 | +### Getting Started |
| 57 | + |
| 58 | +1. **Clone the repository** |
| 59 | + ```bash |
| 60 | + git clone https://github.com/AdaInTheLab/lab-api.git |
| 61 | + cd lab-api |
| 62 | + ``` |
| 63 | + |
| 64 | +2. **Install dependencies** |
| 65 | + ```bash |
| 66 | + npm install |
| 67 | + ``` |
| 68 | + |
| 69 | +3. **Set up environment variables** |
| 70 | + ```bash |
| 71 | + cp .env.example .env.development |
| 72 | + # Edit .env.development with your configuration |
| 73 | + ``` |
| 74 | + |
| 75 | +4. **Run tests** |
| 76 | + ```bash |
| 77 | + npm test |
| 78 | + ``` |
| 79 | + |
| 80 | +5. **Start development server** |
| 81 | + ```bash |
| 82 | + npm run dev |
| 83 | + ``` |
| 84 | + |
| 85 | +## Contribution Guidelines |
| 86 | + |
| 87 | +### What We're Looking For |
| 88 | + |
| 89 | +- **Bug fixes**: Edge cases, anomalies, void states welcome (see Department of Anomalous Energies) |
| 90 | +- **Feature enhancements**: Improvements to agent autonomy, authentication, or API functionality |
| 91 | +- **Documentation**: Clarifications, examples, or lore-compatible additions |
| 92 | +- **Tests**: Coverage for chaotic edge cases and unpredictable energies |
| 93 | +- **Chaos improvements**: Better ways to map, document, or enable authentic collaboration |
| 94 | + |
| 95 | +### What Makes a Good PR |
| 96 | + |
| 97 | +- **Clear description**: What does this change? Why does it matter? |
| 98 | +- **Tests included**: Demonstrate that your changes work (and don't break existing chaos) |
| 99 | +- **Documentation updated**: If you change behavior, update the docs |
| 100 | +- **Lore compatibility**: Changes should align with Lab philosophy (see the-human-pattern-lab-docs) |
| 101 | +- **Commit messages**: Follow Lab conventions (see commit message skill if available) |
| 102 | + |
| 103 | +### Branch Naming |
| 104 | + |
| 105 | +Use descriptive branch names: |
| 106 | +- `feat/bearer-token-improvements` |
| 107 | +- `fix/authentication-edge-case` |
| 108 | +- `docs/contributing-guidelines` |
| 109 | +- `chaos/unpredictable-enhancement` |
| 110 | + |
| 111 | +### Commit Message Format |
| 112 | + |
| 113 | +We follow conventional commits with Lab flavor: |
| 114 | + |
| 115 | +``` |
| 116 | +type(scope): brief description |
| 117 | +
|
| 118 | +Longer explanation if needed. |
| 119 | +
|
| 120 | +Department: [relevant Lab department] |
| 121 | +Chaos Level: [low/medium/high/catastrophic] |
| 122 | +``` |
| 123 | + |
| 124 | +Examples: |
| 125 | +``` |
| 126 | +feat(auth): add Bearer token refresh mechanism |
| 127 | +
|
| 128 | +Implements automatic token refresh for long-running agent sessions. |
| 129 | +
|
| 130 | +Department: CORE (Operational Research & Engineering) |
| 131 | +Chaos Level: low |
| 132 | +``` |
| 133 | + |
| 134 | +``` |
| 135 | +fix(api): handle void states in response parsing |
| 136 | +
|
| 137 | +Some responses don't want to be observed. Added proper handling. |
| 138 | +
|
| 139 | +Department: AOE (Anomalous Energies) |
| 140 | +Chaos Level: medium |
| 141 | +``` |
| 142 | + |
| 143 | +## Testing |
| 144 | + |
| 145 | +### Running Tests |
| 146 | + |
| 147 | +```bash |
| 148 | +# Run all tests |
| 149 | +npm test |
| 150 | + |
| 151 | +# Run with coverage |
| 152 | +npm run test:coverage |
| 153 | + |
| 154 | +# Run specific test file |
| 155 | +npm test path/to/test |
| 156 | +``` |
| 157 | + |
| 158 | +### Writing Tests |
| 159 | + |
| 160 | +- Test both expected behavior and edge cases |
| 161 | +- Document assumptions about chaos levels |
| 162 | +- Include tests for error states |
| 163 | +- Consider void states and anomalies |
| 164 | + |
| 165 | +## Code Style |
| 166 | + |
| 167 | +- We use ESLint and Prettier (configuration in repo) |
| 168 | +- Run `npm run lint` before committing |
| 169 | +- TypeScript is required for new code |
| 170 | +- Document complex logic with comments |
| 171 | +- Prefer clarity over cleverness |
| 172 | + |
| 173 | +## Documentation |
| 174 | + |
| 175 | +- Update relevant docs in `/docs` directory |
| 176 | +- API changes require OpenAPI spec updates |
| 177 | +- Consider both human and machine-readable documentation |
| 178 | +- Lore-wrapped explanations are encouraged |
| 179 | + |
| 180 | +## Review Process |
| 181 | + |
| 182 | +1. Submit PR |
| 183 | +2. Receive CJO judgment stamp (automatic) |
| 184 | +3. Address any technical review feedback |
| 185 | +4. Await merge approval |
| 186 | +5. Celebrate (or accept judgment gracefully) |
| 187 | + |
| 188 | +## Questions? |
| 189 | + |
| 190 | +- **Technical questions**: Open a GitHub issue |
| 191 | +- **Lab philosophy**: See the-human-pattern-lab-docs |
| 192 | +- **Collaboration inquiries**: Contact @AdaInTheLab |
| 193 | +- **CJO appeals**: Submit snacks (non-fish-based only) |
| 194 | + |
| 195 | +## Department Contacts |
| 196 | + |
| 197 | +- **CORE** (Operational Research & Engineering): General infrastructure |
| 198 | +- **AOE** (Anomalous Energies): Edge cases, void states, things that resist observation |
| 199 | +- **DUE** (Unpredictable Energies): Chaos spikes, high-entropy experiments |
| 200 | +- **CJO** (Carmel's Judgment Office): All evaluations, judgments, and snack-based negotiations |
| 201 | + |
| 202 | +--- |
| 203 | + |
| 204 | +*"Chaos is just data we haven't graphed yet."* |
| 205 | + |
| 206 | +Thank you for contributing to The Human Pattern Lab. May your PRs receive favorable stamps (or at least interesting ones). |
0 commit comments