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 buildRules 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.
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-lintdistribution,relaycommand/import package, and normalizedrelay_lintwheel name; .zenodo.jsonparses, its description uses supported HTML only, and citation metadata contains no unassigned DOI or ORCID;pytest,ruff check .,ruff format --check .,mypy, andpython -m buildpass;- 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.