Skip to content

Latest commit

 

History

History
49 lines (40 loc) · 2.24 KB

File metadata and controls

49 lines (40 loc) · 2.24 KB

Contributing

Thanks for taking a look at Relay. I keep the project intentionally small and reviewable, so a focused change with a clear reason is more useful than a broad rewrite.

Create a virtual environment, install python -m pip install -e ".[dev]", then run:

pytest
ruff check .
ruff format --check .
mypy
python -m build

Rules must keep stable IDs, deterministic ordering, exact-line fixtures, and explicit confidence. Add false-positive and malformed-input tests with every detector change. Never execute analysed source in a test or implementation. Changes involving physical control safety should document assumptions and avoid claiming proof.

When proposing a new rule, tell me what you noticed in real code, what Relay should report, and where the heuristic could be wrong. That last part matters: I would rather document uncertainty than make a confident claim the analyser cannot support.

Every detector change needs positive, negative, and ambiguous corpus cases. A language profile must state whether it is AST-backed, compiler-backed, or structural; structural results may not claim type resolution or high semantic confidence.

Release checklist

Before I publish Relay, I check:

  • relay.__version__, .zenodo.json, CITATION.cff, README installation and citation text, changelog, and release notes agree on the version and date;
  • documentation consistently distinguishes the relay-lint distribution, relay command/import package, and normalized relay_lint wheel name;
  • .zenodo.json parses, its description uses supported HTML only, and citation metadata contains no unassigned DOI or ORCID;
  • pytest, ruff check ., ruff format --check ., mypy, and python -m build pass;
  • two clean release builds are byte-identical, checksums are recorded, wheel contents include both schemas, and a fresh environment runs relay --version, relay doctor, relay rules, schema export, and each documented report format;
  • rule IDs, ordering, exact-line fixtures, model labels, confidence caps, schema versions, exit codes, source limits, and atomic report behaviour remain covered;
  • release claims still say review assistant rather than compiler, simulator, proof, certification, or guaranteed real-time behaviour.