Thank you for your interest in contributing to convocate.
Authoritative reference: http://coding-standards.asymmetric-effort.com/
That site is the source of truth for code style across every asymmetric-effort project. Read it before submitting a change. The project-specific guidance below augments it but does not override it — if anything here conflicts with the standards site, the standards site wins. Two project-level rules worth flagging up front:
- No recursion in Go. Go has no tail-call optimization; we use
loops and explicit work-list patterns. See
internal/session/ copyDirfor the canonical iterative pattern. - ed25519-only SSH keys. Every key the project generates must be ed25519. No RSA, no ECDSA.
- Fork the repository
- Clone your fork locally
- Create a feature branch:
git checkout -b feature/my-feature - Make your changes
- Run linters:
make lint - Run tests:
make test - Commit your changes with a clear commit message
- Push to your fork and submit a pull request
- Go 1.26+
- Docker
- yamllint
- jsonlint (via npm:
npm install -g jsonlint)
make build# Run all tests
make test
# Run linters
make lint- Keep changes focused and atomic
- Include tests for new functionality
- Ensure all tests pass before submitting
- Update documentation as needed
- Follow existing code style and conventions
The svr00 repository cutover runbook is at docs/svr00-cutover.md.
Run tools/verify-cutover-readiness.sh to check prerequisites before cutover.
- Use GitHub Issues to report bugs
- Include steps to reproduce the issue
- Include expected and actual behavior
- Include Go version, Docker version, and OS information
By contributing, you agree that your contributions will be licensed under the MIT License.