Thank you for your interest in contributing to Hive! This document provides guidelines for contributing to the project.
- Swift 6.2 or later
- macOS 26+ or Linux (for core runtime development)
- Xcode 16+ (optional, for IDE support)
swift buildswift testIf you encounter intermittent test runner hangs, use the stable runner:
./scripts/swift-test-stable.shSources/Hive/
├── Sources/
│ ├── HiveCore/ # Schema, graph, runtime, store, checkpoint protocols
│ └── Hive/ # Umbrella module that re-exports HiveCore
├── Tests/ # Core and umbrella tests
└── Examples/ # Example executables
- Use GitHub Issues to report bugs or request features
- Include a clear description of the problem
- Provide minimal reproduction steps for bugs
- Mention your environment (OS, Swift version)
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Make your changes
- Add tests for new functionality
- Ensure all tests pass (
swift test) - Commit your changes (
git commit -m 'Add amazing feature') - Push to your branch (
git push origin feature/amazing-feature) - Open a Pull Request
- Follow Swift 6.2 best practices
- All public types must be
Sendable - Use Swift's strict concurrency model
- Document public APIs with DocC comments
- Write tests using Swift Testing (
@Test,#expect) - Use inline schemas for test isolation
- Assert exact event ordering for determinism verification
- Include checkpoint round-trip tests for resumable workflows
Hive's runtime behavior is defined by HIVE_SPEC.md. When contributing:
- Implementation follows the spec — not the other way around
- Use RFC 2119 keywords (MUST/SHOULD/MAY) when referencing spec requirements
- Ensure determinism guarantees are maintained
- Use conventional commits format
- Keep the first line under 72 characters
- Reference issues when applicable
Example:
feat: add evictThread() API for memory management
Adds public method to release in-memory state for completed threads.
Prevents unbounded memory growth in long-running applications.
Fixes #123
- Read the full documentation
- Check the HIVE_SPEC.md for runtime behavior details
- Open a GitHub Discussion for questions
By contributing, you agree that your contributions will be licensed under the MIT License.