- mise — manages Go, task runner, and linters
mise installThis installs:
- Go 1.25.6
- Task 3.47.0
- golangci-lint 2.8.0
- benchstat
| Command | Description |
|---|---|
task test |
Run tests |
task test:race |
Run tests with race detector |
task lint |
Run linters |
task fmt |
Format and auto-fix code |
task build |
Build all packages |
task examples |
Run all examples |
task snippets |
Verify runnable markdown snippets |
task bench |
Run all benchmarks (start s3:up first for S3) |
task bench:stat |
Run benchmarks with -count=10 + benchstat summary |
task bench:compare |
Compare two benchmark result files via benchstat |
task integration |
Run integration tests (requires s3:up) |
task s3:up # start LocalStack + MinIO
task integration # run all integration tests
task s3:down # stop services- Formatting is automated (
gofumpt+goimports) viatask fmt - Use
t.Context()/b.Context()instead ofcontext.Background()in tests - Use
errors.Is()for error comparisons, not== - Prefer
anyoverinterface{} - Prefer early returns over nesting
- See
AGENTS.mdfor AI agent guardrails
Use Conventional Commits with a gitmoji emoji after the scope:
type(scope): <emoji> short imperative description
Examples:
feat(dataset): ✨ add snapshot metadata filtering
fix(storage): 🐛 handle empty manifest on first read
docs(api): 📝 clarify write API codec requirements
refactor(layout): ♻️ extract hive partition logic
- Branch from
main— never commit directly tomain - PR titles follow the same format as commit messages
- Keep PRs focused on a single concern
AGENTS.md— AI agent guardrailsdocs/ARCH_INDEX.md— subsystem navigationdocs/contracts/CONTRACT_*.md— normative behavior contractsPUBLIC_API.md— public API spec
Contracts are authoritative over code. When in doubt, read the contracts first.
By contributing, you agree that your contributions will be licensed under the Apache License 2.0.