Thank you for your interest in votechain-machine.
- Report bugs — open an issue describing the failure mode and reproduction commands.
- Request improvements — open an issue with concrete acceptance criteria.
- Submit code — fork the repo, make the change, and open a pull request.
- Improve reliability and security — this repository is especially sensitive to correctness, so reviews in these areas are highly valued.
- Improve documentation — docs and operations flow quality are part of protocol quality.
git clone https://github.com/AbsurdityIndex/votechain-machine.git
cd votechain-machine
git lfs install
go version # build requires 1.23+ for this moduleBefore running service code, create a local .env from .env.example:
cp .env.example .envUse scripts/generate-compose-env.sh to produce production-like credentials for demo and local compose flows.
- Open a focused issue (or draft PR) before large changes.
- Create a descriptively named branch from
main. - Keep each PR scoped to one change.
- Include tests or validation and operational checks where practical.
- Ensure docs are updated if scripts, compose topology, or API behavior changes.
- Use clear PR summaries and link to related security/architectural rationale.
-
go test ./... -
go vet ./... -
go build ./cmd/... -
go test -race ./... -
gofmt -l $(find . -name '*.go' -not -path './.git/*')(no output) - Targeted simulation scripts run from the affected area (for orchestration and verification changes).
-
docker compose down -v --remove-orphans && docker compose up -d --buildwhen stack topology changes.
If your PR changes protocol-relevant behavior, include a short threat-model note in the PR description.
- Keep code simple and explicit.
- Run
gofmton touched Go files. - Keep scripts readable and avoid hardcoded workstation paths.
Security/cryptographic changes should include:
- A brief rationale in the PR description.
- Any new assumptions or trust-boundary changes.
- Explicit mention of compatibility implications.
- A request for review by an area owner.
Do not open public issues for vulnerabilities.
Use the process in SECURITY.md.