Thanks for contributing to maild.
- Keep pull requests focused and reviewable.
- Humans are accountable for final code, docs, tests, and releases.
- AI assistance is allowed, but must be disclosed in PR descriptions when material.
Bring up a local contributor environment with:
make setupThis command creates .env from .env.example (if missing), downloads Go dependencies, and starts local Docker services.
If AI materially influenced a PR, include:
- tools/models used
- files/areas influenced
- human validation performed (tests, review, security checks)
Commit history must not include AI branding/co-author trailers.
Install local guard:
cp scripts/pre-commit .git/hooks/pre-commit
chmod +x .git/hooks/pre-commitOptional local pre-push check:
cp scripts/pre-push .git/hooks/pre-push
chmod +x .git/hooks/pre-pushRun check manually:
scripts/check-commit-attribution.shIf commit attribution cleanup is needed, use scripts/check-commit-attribution.sh and standard interactive rebase/cherry-pick workflows locally.
Before opening or updating a PR, run:
make verifymake verify runs:
- formatting check (
gofmt -l .) - build (
go build ./...) - tests (
go test ./...) - commit attribution check (
scripts/check-commit-attribution.sh)
For a security-inclusive local pass, run:
make verify-fullmake verify-full runs make verify plus vulnerability checks via
govulncheck ./....
Before requesting review for mail flow changes:
- test success path and failure path
- verify retry behavior and max retry boundaries
- verify rate limiting and suppression are respected
- confirm no secrets are printed in logs
Please do not open public issues for vulnerabilities. See SECURITY.md.
Use GitHub Issues for all planned work, bugs, and release tasks.
Labels used in this repository:
bugenhancementdocumentationfrontendbackendpriority:highpriority:mediumpriority:low
Milestones:
v0.6.0: production hardening baselinev0.7.0: campaign composer MVPv0.8.0: audience builder MVPv0.9.0: ops and onboarding maturityv1.0.0: GA release gate
Issue hygiene rules:
- Open one issue per concrete deliverable or bug.
- Add at least one scope label (
frontend,backend, ordocumentation). - Add one priority label.
- Attach the correct milestone before implementation starts.
- Link PRs to issues using
Closes #<number>when merged.