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.
- Install Go 1.26+, Git 2.36+, Python 3.9+ and Node with npm.
- Run
make build-majlisto build the dashboard andbin/majlis. - Run the gates:
make fmt-check vetgo test -count=1 ./...make checks # import boundaries, generated code, noticesmake test-race # storage, writer, delivery and runtime changesmake ci runs the full local suite, including dashboard and browser gates and the fresh-daemon quickstart check.
What reviewers check first
Section titled “What reviewers check first”- 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-importsfailure is design feedback. Restructure rather than widening the allowlist.
Generated code
Section titled “Generated code”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.
Adapter fixtures
Section titled “Adapter fixtures”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.
Sign-off
Section titled “Sign-off”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.