Skip to content

Contributing

Contributions are welcome once the repository is public. The full guide is CONTRIBUTING.md in the repository, and automated builders also follow AGENTS.md.

  1. Install Go 1.26+, Git 2.36+, Python 3.9+ and Node with npm.
  2. Run make build-majlis to build the dashboard and bin/majlis.
  3. Run the gates:
Terminal window
make fmt-check vet
go test -count=1 ./...
make checks # import boundaries, generated code, notices
make test-race # storage, writer, delivery and runtime changes

make ci runs the full local suite, including dashboard and browser gates and the fresh-daemon quickstart check.

  • Trust boundaries. Untrusted data handling, failure semantics, identity separation and honest delivery labels.
  • Evidence. No gate is marked passed without running it. Fixture-only success is not integration evidence.
  • Contracts. Incompatible OpenAPI, CLI JSON, MCP or event changes declare a version bump and a migration note.
  • Import boundaries. A make check-imports failure is design feedback. Restructure rather than widening the allowlist.

SQL (via sqlc) and frontend API types are generated and checked in. Change the source, then run make gen; the tree must show no diff afterwards. Never hand-edit generated files.

Each supported harness version needs synthetic, versioned contract fixtures under tests/fixtures/. Untested versions get a warning and observe-only fallback and are never listed as supported. See Writing an adapter.

Every commit needs a Signed-off-by trailer (Developer Certificate of Origin 1.1). Until a LICENSE file exists, do not represent the work as licensed.