Skip to content

Latest commit

 

History

History
51 lines (36 loc) · 1.69 KB

File metadata and controls

51 lines (36 loc) · 1.69 KB

Contributing

See README.md for what this project is.

Dev setup

Prerequisites match .github/workflows/ci.yml — currently OTP 29.0.2 / Elixir 1.20.2:

mix deps.get
mix test        # fast suite; add --include integration for everything

Quality gate — run before opening a PR

CI runs these; they must be green:

mix ci         # compile -Werror, format, credo --strict (ex_slop), audits, ex_dna, reach arch policy
mix dialyzer   # type analysis (own CI job)

mix precommit is the mutating convenience variant (formats instead of checking format) for local use before committing.

Pull requests

  1. Branch off main.
  2. Keep changes focused; update README.md (and other docs) in the same change when behavior/commands/structure move.
  3. Get mix ci + mix dialyzer + tests green locally.
  4. Open a PR against main with a clear what/why.

Releases are automatic: a merged bump of version: in mix.exs creates the matching v<version> GitHub release (see .github/workflows/release.yml).

Anti-slop measures

CI gates against low-quality (especially AI-generated) code; see AGENTS.md for the full tooling guide. In short:

  • credo --strict with the ex_slop plugin (LLM-pattern checks: blanket rescues, narrator comments, anti-idiomatic Enum, N+1)
  • ex_dna duplication ratchet — new clones fail CI
  • reach.check --arch — the architecture policy in .reach.exs; --smells --strict fails on new structural smells vs the committed baseline
  • No explanatory comments — docs live in @moduledoc/@doc/@spec

Don't disable a gate to get green; fix the code.