Skip to main content

Contributing to RMI ๐ŸŸข

Branch modelโ€‹

  • main โ€” protected. Every commit passes CI before landing.
  • wip/* โ€” feature branches. Delete after merge.

Commit conventionโ€‹

Conventional Commits, enforced by commitlint + lefthook:

feat(scanner): add LP age check to honeypot suite
fix(wallet): handle zero-decimals SPL tokens in balance math
docs(api): document x402 payment header on /scan

Never: WIP, fix, temp, oops, debug.

Pre-commit gates (lefthook)โ€‹

GateTool
Lint + formatruff
Typesmypy (strict)
Secretsgitleaks (custom crypto rules)
Securitybandit
Testspytest with coverage โ‰ฅ 70%

Install hooks once: lefthook install.

Testing standardโ€‹

  • Tests must assert behavior, not existence. assert resp.status_code == 200 alone is rejected in review.
  • Scanner logic needs fixture-based tests with recorded provider responses (tests/fixtures/).
  • Mutation score for scanner paths tracked in MUTATION_BASELINE.md.

What NOT to contributeโ€‹

  • Detection heuristics, thresholds, or scoring weights scraped from elsewhere.
  • Anything that identifies internal infrastructure.
  • Vendored third-party trees โ€” add a dependency instead.

Repo: git.rugmunch.io/RugMunchMedia/rmi-backend