Thank you for looking at Entros.
Do not report security problems here. Read SECURITY.md first.
Open an issue to describe what you want to change and wait for a reply. This applies to anything beyond a typo or a broken link. Entros is a protocol with on-chain state, so a change that looks small can alter the behaviour of a deployed program.
Open your pull request against develop. main is the release branch.
Keep one logical change per pull request. A smaller pull request gets reviewed sooner and is easier to reason about against on-chain state.
Say what changed and how to test it. Commit style and branch naming are yours to choose.
Run the checks for the language you touched.
Rust
cargo fmt --check
cargo clippy --all-targets --all-features -- -D warnings
cargo testTypeScript
npx eslint .
npx tsc --noEmit
npm testAnchor programs
anchor build
anchor testA pull request that fails any of these will not be merged.
- No
unwrap()in production Rust paths. Handle the error. - No
anyand no@ts-ignorein TypeScript. Strict mode stays on. - Every Anchor instruction validates every account it receives.
- Program state lives in Program Derived Addresses, never raw keypair accounts.
- Never commit a keypair, a
.envfile, a build artifact ornode_modules/.
Entros proves personhood without collecting biometrics. Two rules protect that and they are not negotiable.
Raw motion and touch recordings never leave the device. Neither does the derived behavioural fingerprint. If a change transmits, logs or stores a raw sensor stream, it will be rejected.
Captured audio is never persisted. It is sent for transcription and discarded.
If you are unsure whether a change crosses either line, ask in the issue before writing the code.
By contributing you agree that your contribution is licensed under the same terms as this repository.