Thank you for taking part in the beta. This document covers how to report issues, suggest improvements, and (if you'd like) contribute code.
- Follow the Code of Conduct.
- Use SUPPORT.md for general help and SECURITY.md for private vulnerability reports.
- Open an issue at Issues → New Issue
- Use the Bug Report template if available, otherwise include:
- Device model and Android version
- DSM Protocol app version (visible in Settings → About)
- Steps to reproduce
- What you expected vs. what happened
- Attach the diagnostics file: in-app Settings → Export Diagnostics
- Attach
adb logcatoutput if you have it:adb logcat -d > logcat.txt
Do not open a public issue for security vulnerabilities. Follow SECURITY.md and email team@irrefutablelabs.org with details. We will respond within 48 hours.
Open an issue with the Enhancement label. Describe the use case, not just the feature.
See QUICKSTART.md for environment setup.
Base development: Rust 1.91.0 pinned by rust-toolchain.toml (via rustup), Node.js 20+ (via nvm recommended), protoc
Android work only: cargo-ndk, Android NDK 27.0.12077973, Android SDK with platform-tools (adb), Java 17+, ANDROID_NDK_HOME or ANDROID_NDK_ROOT
| Branch | Purpose |
|---|---|
main |
Stable; all PRs target this |
release/x.y.z |
Release preparation; created from main |
fix/short-description |
Bug fixes |
feat/short-description |
New features |
git checkout -b fix/your-description
# make changes
make lint
make build
make typecheck
# then run the targeted tests for the area you changed
git push origin fix/your-description
# open a PR against mainTargeted validation examples:
- Rust / SDK / storage work:
make test-rustor focusedcargo test --package ... - Frontend work:
make test-frontend - Android / JNI work:
make android
Treat the DSM primitive as closed by default.
- Do not expand the primitive for convenience, flexibility, or future-proofing.
- New capabilities should be modeled above the primitive as composed protocols.
- Primitive changes are reserved for soundness fixes, ambiguity removal, simplification without expanding acceptance, or replacement of a broken assumption.
If your change touches acceptance, ordering, proof verification, identity binding, or fork
exclusion, read dsm_client/deterministic_state_machine/dsm/src/core/ and dsm/src/bilateral/ first.
-
make lintpasses (no clippy warnings, fmt clean) -
make buildpasses -
make typecheckpasses for frontend-affecting changes - Relevant targeted tests ran for the surfaces touched (
make test-rust,make test-frontend, focused package tests, or Android build/install checks) -
make androidproduces a working APK if Android or JNI surfaces changed - No personal paths, keys, or credentials in any file
-
git grep -r "TODO\|FIXME\|HACK\|XXX"returns zero results (these are banned — no exceptions)
Use conventional commits:
fix: bluetooth pairing state not reset on disconnect
feat: add diagnostics export button to settings screen
chore: bump cargo dependencies
docs: update SETUP.md with Linux NDK path example
This project is dual-licensed under MIT and Apache 2.0. By submitting a pull request, you agree that your contribution will be dual-licensed under these same terms, without any additional conditions.
- Issues: GitHub Issues on this repo
- Security: info@irrefutablelabs.org
- General: see SUPPORT.md
- Telegram Dev Group: https://t.me/+nQsx8Or2YQo1MDcx